Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
441cca23
T
Third Party Harfbuzz
项目概览
OpenHarmony
/
Third Party Harfbuzz
接近 2 年 前同步成功
通知
1
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看板
提交
441cca23
编写于
4月 23, 2019
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Use hb_forward() when forwarding parameter pack
上级
20f31347
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
18 addition
and
17 deletion
+18
-17
src/hb-open-type.hh
src/hb-open-type.hh
+16
-16
src/hb-serialize.hh
src/hb-serialize.hh
+2
-1
未找到文件。
src/hb-open-type.hh
浏览文件 @
441cca23
...
@@ -285,7 +285,7 @@ struct OffsetTo : Offset<OffsetType, has_null>
...
@@ -285,7 +285,7 @@ struct OffsetTo : Offset<OffsetType, has_null>
}
}
template
<
typename
T
,
typename
...
Ts
>
template
<
typename
T
,
typename
...
Ts
>
bool
serialize_subset
(
hb_subset_context_t
*
c
,
const
T
&
src
,
const
void
*
base
,
Ts
...
ds
)
bool
serialize_subset
(
hb_subset_context_t
*
c
,
const
T
&
src
,
const
void
*
base
,
Ts
&&
...
ds
)
{
{
*
this
=
0
;
*
this
=
0
;
if
(
has_null
&&
&
src
==
&
Null
(
T
))
if
(
has_null
&&
&
src
==
&
Null
(
T
))
...
@@ -295,7 +295,7 @@ struct OffsetTo : Offset<OffsetType, has_null>
...
@@ -295,7 +295,7 @@ struct OffsetTo : Offset<OffsetType, has_null>
s
->
push
();
s
->
push
();
bool
ret
=
src
.
subset
(
c
,
ds
...);
bool
ret
=
src
.
subset
(
c
,
hb_forward
<
Ts
>
(
ds
)
...);
if
(
ret
||
!
has_null
)
if
(
ret
||
!
has_null
)
s
->
add_link
(
*
this
,
s
->
pop_pack
(),
base
);
s
->
add_link
(
*
this
,
s
->
pop_pack
(),
base
);
...
@@ -315,12 +315,12 @@ struct OffsetTo : Offset<OffsetType, has_null>
...
@@ -315,12 +315,12 @@ struct OffsetTo : Offset<OffsetType, has_null>
}
}
template
<
typename
...
Ts
>
template
<
typename
...
Ts
>
bool
sanitize
(
hb_sanitize_context_t
*
c
,
const
void
*
base
,
Ts
...
ds
)
const
bool
sanitize
(
hb_sanitize_context_t
*
c
,
const
void
*
base
,
Ts
&&
...
ds
)
const
{
{
TRACE_SANITIZE
(
this
);
TRACE_SANITIZE
(
this
);
return_trace
(
sanitize_shallow
(
c
,
base
)
&&
return_trace
(
sanitize_shallow
(
c
,
base
)
&&
(
this
->
is_null
()
||
(
this
->
is_null
()
||
StructAtOffset
<
Type
>
(
base
,
*
this
).
sanitize
(
c
,
ds
...)
||
StructAtOffset
<
Type
>
(
base
,
*
this
).
sanitize
(
c
,
hb_forward
<
Ts
>
(
ds
)
...)
||
neuter
(
c
)));
neuter
(
c
)));
}
}
...
@@ -418,12 +418,12 @@ struct UnsizedArrayOf
...
@@ -418,12 +418,12 @@ struct UnsizedArrayOf
return_trace
(
true
);
return_trace
(
true
);
}
}
template
<
typename
...
Ts
>
template
<
typename
...
Ts
>
bool
sanitize
(
hb_sanitize_context_t
*
c
,
unsigned
int
count
,
const
void
*
base
,
Ts
...
ds
)
const
bool
sanitize
(
hb_sanitize_context_t
*
c
,
unsigned
int
count
,
const
void
*
base
,
Ts
&&
...
ds
)
const
{
{
TRACE_SANITIZE
(
this
);
TRACE_SANITIZE
(
this
);
if
(
unlikely
(
!
sanitize_shallow
(
c
,
count
)))
return_trace
(
false
);
if
(
unlikely
(
!
sanitize_shallow
(
c
,
count
)))
return_trace
(
false
);
for
(
unsigned
int
i
=
0
;
i
<
count
;
i
++
)
for
(
unsigned
int
i
=
0
;
i
<
count
;
i
++
)
if
(
unlikely
(
!
arrayZ
[
i
].
sanitize
(
c
,
base
,
ds
...)))
if
(
unlikely
(
!
arrayZ
[
i
].
sanitize
(
c
,
base
,
hb_forward
<
Ts
>
(
ds
)
...)))
return_trace
(
false
);
return_trace
(
false
);
return_trace
(
true
);
return_trace
(
true
);
}
}
...
@@ -464,11 +464,11 @@ struct UnsizedOffsetListOf : UnsizedOffsetArrayOf<Type, OffsetType, has_null>
...
@@ -464,11 +464,11 @@ struct UnsizedOffsetListOf : UnsizedOffsetArrayOf<Type, OffsetType, has_null>
}
}
template
<
typename
...
Ts
>
template
<
typename
...
Ts
>
bool
sanitize
(
hb_sanitize_context_t
*
c
,
unsigned
int
count
,
Ts
...
ds
)
const
bool
sanitize
(
hb_sanitize_context_t
*
c
,
unsigned
int
count
,
Ts
&&
...
ds
)
const
{
{
TRACE_SANITIZE
(
this
);
TRACE_SANITIZE
(
this
);
return_trace
((
UnsizedOffsetArrayOf
<
Type
,
OffsetType
,
has_null
>
return_trace
((
UnsizedOffsetArrayOf
<
Type
,
OffsetType
,
has_null
>
::
sanitize
(
c
,
count
,
this
,
ds
...)));
::
sanitize
(
c
,
count
,
this
,
hb_forward
<
Ts
>
(
ds
)
...)));
}
}
};
};
...
@@ -589,13 +589,13 @@ struct ArrayOf
...
@@ -589,13 +589,13 @@ struct ArrayOf
return_trace
(
true
);
return_trace
(
true
);
}
}
template
<
typename
...
Ts
>
template
<
typename
...
Ts
>
bool
sanitize
(
hb_sanitize_context_t
*
c
,
const
void
*
base
,
Ts
...
ds
)
const
bool
sanitize
(
hb_sanitize_context_t
*
c
,
const
void
*
base
,
Ts
&&
...
ds
)
const
{
{
TRACE_SANITIZE
(
this
);
TRACE_SANITIZE
(
this
);
if
(
unlikely
(
!
sanitize_shallow
(
c
)))
return_trace
(
false
);
if
(
unlikely
(
!
sanitize_shallow
(
c
)))
return_trace
(
false
);
unsigned
int
count
=
len
;
unsigned
int
count
=
len
;
for
(
unsigned
int
i
=
0
;
i
<
count
;
i
++
)
for
(
unsigned
int
i
=
0
;
i
<
count
;
i
++
)
if
(
unlikely
(
!
arrayZ
[
i
].
sanitize
(
c
,
base
,
ds
...)))
if
(
unlikely
(
!
arrayZ
[
i
].
sanitize
(
c
,
base
,
hb_forward
<
Ts
>
(
ds
)
...)))
return_trace
(
false
);
return_trace
(
false
);
return_trace
(
true
);
return_trace
(
true
);
}
}
...
@@ -663,10 +663,10 @@ struct OffsetListOf : OffsetArrayOf<Type>
...
@@ -663,10 +663,10 @@ struct OffsetListOf : OffsetArrayOf<Type>
}
}
template
<
typename
...
Ts
>
template
<
typename
...
Ts
>
bool
sanitize
(
hb_sanitize_context_t
*
c
,
Ts
...
ds
)
const
bool
sanitize
(
hb_sanitize_context_t
*
c
,
Ts
&&
...
ds
)
const
{
{
TRACE_SANITIZE
(
this
);
TRACE_SANITIZE
(
this
);
return_trace
(
OffsetArrayOf
<
Type
>::
sanitize
(
c
,
this
,
ds
...));
return_trace
(
OffsetArrayOf
<
Type
>::
sanitize
(
c
,
this
,
hb_forward
<
Ts
>
(
ds
)
...));
}
}
};
};
...
@@ -765,13 +765,13 @@ struct ArrayOfM1
...
@@ -765,13 +765,13 @@ struct ArrayOfM1
{
return
lenM1
.
static_size
+
(
lenM1
+
1
)
*
Type
::
static_size
;
}
{
return
lenM1
.
static_size
+
(
lenM1
+
1
)
*
Type
::
static_size
;
}
template
<
typename
...
Ts
>
template
<
typename
...
Ts
>
bool
sanitize
(
hb_sanitize_context_t
*
c
,
const
void
*
base
,
Ts
...
ds
)
const
bool
sanitize
(
hb_sanitize_context_t
*
c
,
const
void
*
base
,
Ts
&&
...
ds
)
const
{
{
TRACE_SANITIZE
(
this
);
TRACE_SANITIZE
(
this
);
if
(
unlikely
(
!
sanitize_shallow
(
c
)))
return_trace
(
false
);
if
(
unlikely
(
!
sanitize_shallow
(
c
)))
return_trace
(
false
);
unsigned
int
count
=
lenM1
+
1
;
unsigned
int
count
=
lenM1
+
1
;
for
(
unsigned
int
i
=
0
;
i
<
count
;
i
++
)
for
(
unsigned
int
i
=
0
;
i
<
count
;
i
++
)
if
(
unlikely
(
!
arrayZ
[
i
].
sanitize
(
c
,
base
,
ds
...)))
if
(
unlikely
(
!
arrayZ
[
i
].
sanitize
(
c
,
base
,
hb_forward
<
Ts
>
(
ds
)
...)))
return_trace
(
false
);
return_trace
(
false
);
return_trace
(
true
);
return_trace
(
true
);
}
}
...
@@ -970,13 +970,13 @@ struct VarSizedBinSearchArrayOf
...
@@ -970,13 +970,13 @@ struct VarSizedBinSearchArrayOf
return_trace
(
true
);
return_trace
(
true
);
}
}
template
<
typename
...
Ts
>
template
<
typename
...
Ts
>
bool
sanitize
(
hb_sanitize_context_t
*
c
,
const
void
*
base
,
Ts
...
ds
)
const
bool
sanitize
(
hb_sanitize_context_t
*
c
,
const
void
*
base
,
Ts
&&
...
ds
)
const
{
{
TRACE_SANITIZE
(
this
);
TRACE_SANITIZE
(
this
);
if
(
unlikely
(
!
sanitize_shallow
(
c
)))
return_trace
(
false
);
if
(
unlikely
(
!
sanitize_shallow
(
c
)))
return_trace
(
false
);
unsigned
int
count
=
get_length
();
unsigned
int
count
=
get_length
();
for
(
unsigned
int
i
=
0
;
i
<
count
;
i
++
)
for
(
unsigned
int
i
=
0
;
i
<
count
;
i
++
)
if
(
unlikely
(
!
(
*
this
)[
i
].
sanitize
(
c
,
base
,
ds
...)))
if
(
unlikely
(
!
(
*
this
)[
i
].
sanitize
(
c
,
base
,
hb_forward
<
Ts
>
(
ds
)
...)))
return_trace
(
false
);
return_trace
(
false
);
return_trace
(
true
);
return_trace
(
true
);
}
}
...
...
src/hb-serialize.hh
浏览文件 @
441cca23
...
@@ -127,7 +127,8 @@ struct hb_serialize_context_t
...
@@ -127,7 +127,8 @@ struct hb_serialize_context_t
{
return
propagate_error
(
!
hb_deref_pointer
(
obj
).
in_error
());
}
{
return
propagate_error
(
!
hb_deref_pointer
(
obj
).
in_error
());
}
template
<
typename
T1
,
typename
...
Ts
>
bool
propagate_error
(
T1
&&
o1
,
Ts
&&
...
os
)
template
<
typename
T1
,
typename
...
Ts
>
bool
propagate_error
(
T1
&&
o1
,
Ts
&&
...
os
)
{
return
propagate_error
(
o1
)
&&
propagate_error
(
os
...);
}
{
return
propagate_error
(
hb_forward
<
T1
>
(
o1
))
&&
propagate_error
(
hb_forward
<
Ts
>
(
os
)...);
}
/* To be called around main operation. */
/* To be called around main operation. */
template
<
typename
Type
>
template
<
typename
Type
>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录