Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
dc9c4d93
T
Third Party Harfbuzz
项目概览
OpenHarmony
/
Third Party Harfbuzz
大约 1 年 前同步成功
通知
0
Star
18
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Harfbuzz
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
dc9c4d93
编写于
8月 04, 2009
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[HB] Sanitize DeviceTable
上级
ad3a3cd4
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
19 addition
and
8 deletion
+19
-8
src/hb-open-types-private.hh
src/hb-open-types-private.hh
+4
-4
src/hb-ot-layout-common-private.hh
src/hb-ot-layout-common-private.hh
+14
-3
src/hb-ot-layout-gsub-private.hh
src/hb-ot-layout-gsub-private.hh
+1
-1
未找到文件。
src/hb-open-types-private.hh
浏览文件 @
dc9c4d93
...
...
@@ -76,7 +76,7 @@ struct _hb_sanitize_context_t
#define SANITIZE_SELF() SANITIZE_OBJ (*this)
#define SANITIZE_OBJ(X) SANITIZE_MEM(&(X), sizeof (X))
#define SANITIZE_GET_SIZE() SANITIZE_MEM (this, this->get_size ())
#define SANITIZE_GET_SIZE() SANITIZE_
SELF() && SANITIZE_
MEM (this, this->get_size ())
#define SANITIZE_MEM(B,L) HB_LIKELY (context->start <= CONST_CHARP(B) && CONST_CHARP(B) + (L) <= context->end)
/* XXX overflow */
...
...
@@ -376,7 +376,7 @@ struct GenericArrayOf
{
return
sizeof
(
len
)
+
len
*
sizeof
(
array
[
0
]);
}
inline
bool
sanitize
(
SANITIZE_ARG_DEF
)
{
if
(
!
(
SANITIZE
(
len
)
&&
SANITIZE_GET_SIZE
()
))
return
false
;
if
(
!
SANITIZE_GET_SIZE
(
))
return
false
;
/* Note; for non-recursive types, this is not much needed
unsigned int count = len;
for (unsigned int i = 0; i < count; i++)
...
...
@@ -385,7 +385,7 @@ struct GenericArrayOf
*/
}
inline
bool
sanitize
(
SANITIZE_ARG_DEF
,
const
void
*
base
)
{
if
(
!
(
SANITIZE
(
len
)
&&
SANITIZE_GET_SIZE
()
))
return
false
;
if
(
!
SANITIZE_GET_SIZE
(
))
return
false
;
unsigned
int
count
=
len
;
for
(
unsigned
int
i
=
0
;
i
<
count
;
i
++
)
if
(
!
array
[
i
].
sanitize
(
SANITIZE_ARG
,
base
))
...
...
@@ -430,7 +430,7 @@ struct HeadlessArrayOf
{
return
sizeof
(
len
)
+
(
len
?
len
-
1
:
0
)
*
sizeof
(
array
[
0
]);
}
inline
bool
sanitize
(
SANITIZE_ARG_DEF
)
{
if
(
!
(
SANITIZE_SELF
()
&&
SANITIZE_GET_SIZE
()
))
return
false
;
if
(
!
SANITIZE_GET_SIZE
(
))
return
false
;
unsigned
int
count
=
len
?
len
-
1
:
0
;
/* Note; for non-recursive types, this is not much needed
for (unsigned int i = 0; i < count; i++)
...
...
src/hb-ot-layout-common-private.hh
浏览文件 @
dc9c4d93
...
...
@@ -357,7 +357,7 @@ struct Coverage
}
}
inline
bool
sanitize
(
SANITIZE_ARG_DEF
)
{
bool
sanitize
(
SANITIZE_ARG_DEF
)
{
if
(
!
SANITIZE
(
u
.
format
))
return
false
;
switch
(
u
.
format
)
{
case
1
:
return
u
.
format1
->
sanitize
(
SANITIZE_ARG
);
...
...
@@ -469,7 +469,7 @@ struct ClassDef
}
}
inline
bool
sanitize
(
SANITIZE_ARG_DEF
)
{
bool
sanitize
(
SANITIZE_ARG_DEF
)
{
if
(
!
SANITIZE
(
u
.
format
))
return
false
;
switch
(
u
.
format
)
{
case
1
:
return
u
.
format1
->
sanitize
(
SANITIZE_ARG
);
...
...
@@ -494,6 +494,8 @@ ASSERT_SIZE (ClassDef, 2);
struct
Device
{
inline
int
operator
()
(
unsigned
int
ppem_size
)
const
{
return
get_delta
(
ppem_size
);
}
int
get_delta
(
unsigned
int
ppem_size
)
const
{
unsigned
int
f
=
deltaFormat
;
...
...
@@ -517,7 +519,16 @@ struct Device
return
delta
;
}
inline
int
operator
()
(
unsigned
int
ppem_size
)
const
{
return
get_delta
(
ppem_size
);
}
inline
unsigned
int
get_size
()
const
{
unsigned
int
f
=
deltaFormat
;
if
(
HB_UNLIKELY
(
f
<
1
||
f
>
3
||
startSize
>
endSize
))
return
sizeof
(
*
this
);
return
sizeof
(
*
this
)
+
((
endSize
-
startSize
+
(
1
<<
(
4
-
f
))
-
1
)
>>
(
4
-
f
));
}
bool
sanitize
(
SANITIZE_ARG_DEF
)
{
return
SANITIZE_GET_SIZE
();
}
private:
USHORT
startSize
;
/* Smallest size to correct--in ppem */
...
...
src/hb-ot-layout-gsub-private.hh
浏览文件 @
dc9c4d93
...
...
@@ -680,7 +680,7 @@ struct SubstLookupSubTable
}
}
inline
bool
sanitize
(
SANITIZE_ARG_DEF
)
{
bool
sanitize
(
SANITIZE_ARG_DEF
)
{
if
(
!
SANITIZE
(
u
.
format
))
return
false
;
switch
(
u
.
format
)
{
case
Single
:
return
u
.
single
->
sanitize
(
SANITIZE_ARG
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录