Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
95e20240
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,发现更多精彩内容 >>
提交
95e20240
编写于
8月 28, 2009
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[HB] Allow enabling different debug facilities individually
上级
37006bd1
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
34 addition
and
26 deletion
+34
-26
src/hb-blob.c
src/hb-blob.c
+16
-12
src/hb-open-type-private.hh
src/hb-open-type-private.hh
+18
-14
未找到文件。
src/hb-blob.c
浏览文件 @
95e20240
...
...
@@ -35,6 +35,10 @@
#include <sys/mman.h>
#endif
/* HAVE_SYS_MMAN_H */
#ifndef HB_DEBUG_BLOB
#define HB_DEBUG_BLOB HB_DEBUG
#endif
struct
_hb_blob_t
{
hb_reference_count_t
ref_count
;
...
...
@@ -189,7 +193,7 @@ hb_blob_lock (hb_blob_t *blob)
hb_mutex_lock
(
blob
->
lock
);
blob
->
lock_count
++
;
#if HB_DEBUG
#if HB_DEBUG
_BLOB
fprintf
(
stderr
,
"%p %s (%d) -> %p
\n
"
,
blob
,
__FUNCTION__
,
blob
->
lock_count
,
blob
->
data
);
#endif
...
...
@@ -209,7 +213,7 @@ hb_blob_unlock (hb_blob_t *blob)
assert
(
blob
->
lock_count
>
0
);
blob
->
lock_count
--
;
#if HB_DEBUG
#if HB_DEBUG
_BLOB
fprintf
(
stderr
,
"%p %s (%d) -> %p
\n
"
,
blob
,
__FUNCTION__
,
hb_atomic_int_get
(
blob
->
lock_count
),
blob
->
data
);
#endif
...
...
@@ -251,31 +255,31 @@ _try_make_writable_inplace_unix_locked (hb_blob_t *blob)
#endif
if
((
unsigned
int
)
-
1
==
pagesize
)
{
#if HB_DEBUG
#if HB_DEBUG
_BLOB
fprintf
(
stderr
,
"%p %s: failed to get pagesize: %s
\n
"
,
blob
,
__FUNCTION__
,
strerror
(
errno
));
#endif
return
FALSE
;
}
#if HB_DEBUG
#if HB_DEBUG
_BLOB
fprintf
(
stderr
,
"%p %s: pagesize is %u
\n
"
,
blob
,
__FUNCTION__
,
pagesize
);
#endif
mask
=
~
(
pagesize
-
1
);
addr
=
(
const
char
*
)
(((
size_t
)
blob
->
data
)
&
mask
);
length
=
(
const
char
*
)
(((
size_t
)
blob
->
data
+
blob
->
length
+
pagesize
-
1
)
&
mask
)
-
addr
;
#if HB_DEBUG
#if HB_DEBUG
_BLOB
fprintf
(
stderr
,
"%p %s: calling mprotect on [%p..%p] (%d bytes)
\n
"
,
blob
,
__FUNCTION__
,
addr
,
addr
+
length
,
length
);
#endif
if
(
-
1
==
mprotect
((
void
*
)
addr
,
length
,
PROT_READ
|
PROT_WRITE
))
{
#if HB_DEBUG
#if HB_DEBUG
_BLOB
fprintf
(
stderr
,
"%p %s: %s
\n
"
,
blob
,
__FUNCTION__
,
strerror
(
errno
));
#endif
return
FALSE
;
}
#if HB_DEBUG
#if HB_DEBUG
_BLOB
fprintf
(
stderr
,
"%p %s: successfully made [%p..%p] (%d bytes) writable
\n
"
,
blob
,
__FUNCTION__
,
addr
,
addr
+
length
,
length
);
...
...
@@ -289,17 +293,17 @@ _try_make_writable_inplace_unix_locked (hb_blob_t *blob)
static
void
_try_writable_inplace_locked
(
hb_blob_t
*
blob
)
{
#if HB_DEBUG
#if HB_DEBUG
_BLOB
fprintf
(
stderr
,
"%p %s: making writable
\n
"
,
blob
,
__FUNCTION__
);
#endif
if
(
_try_make_writable_inplace_unix_locked
(
blob
))
{
#if HB_DEBUG
#if HB_DEBUG
_BLOB
fprintf
(
stderr
,
"%p %s: making writable -> succeeded
\n
"
,
blob
,
__FUNCTION__
);
#endif
blob
->
mode
=
HB_MEMORY_MODE_WRITABLE
;
}
else
{
#if HB_DEBUG
#if HB_DEBUG
_BLOB
fprintf
(
stderr
,
"%p %s: making writable -> FAILED
\n
"
,
blob
,
__FUNCTION__
);
#endif
/* Failed to make writable inplace, mark that */
...
...
@@ -341,7 +345,7 @@ hb_blob_try_writable (hb_blob_t *blob)
{
char
*
new_data
;
#if HB_DEBUG
#if HB_DEBUG
_BLOB
fprintf
(
stderr
,
"%p %s (%d) -> %p
\n
"
,
blob
,
__FUNCTION__
,
blob
->
lock_count
,
blob
->
data
);
#endif
...
...
@@ -351,7 +355,7 @@ hb_blob_try_writable (hb_blob_t *blob)
new_data
=
malloc
(
blob
->
length
);
if
(
new_data
)
{
#if HB_DEBUG
#if HB_DEBUG
_BLOB
fprintf
(
stderr
,
"%p %s: dupped successfully -> %p
\n
"
,
blob
,
__FUNCTION__
,
blob
->
data
);
#endif
memcpy
(
new_data
,
blob
->
data
,
blob
->
length
);
...
...
src/hb-open-type-private.hh
浏览文件 @
95e20240
...
...
@@ -109,13 +109,17 @@ struct Null <Type> \
* Sanitize
*/
#if HB_DEBUG
#ifndef HB_DEBUG_SANITIZE
#define HB_DEBUG_SANITIZE HB_DEBUG
#endif
#if HB_DEBUG_SANITIZE
#define SANITIZE_DEBUG_ARG_DEF , unsigned int sanitize_depth
#define SANITIZE_DEBUG_ARG , sanitize_depth + 1
#define SANITIZE_DEBUG_ARG_INIT , 1
#define SANITIZE_DEBUG() \
HB_STMT_START { \
if (sanitize_depth < HB_DEBUG) \
if (sanitize_depth < HB_DEBUG
_SANITIZE
) \
fprintf (stderr, "SANITIZE(%p) %-*d-> %s\n", \
(CONST_CHARP (this) == NullPool) ? 0 : this, \
sanitize_depth, sanitize_depth, \
...
...
@@ -152,7 +156,7 @@ _hb_sanitize_init (hb_sanitize_context_t *context,
context
->
end
=
context
->
start
+
hb_blob_get_length
(
blob
);
context
->
edit_count
=
0
;
#if HB_DEBUG
#if HB_DEBUG
_SANITIZE
fprintf
(
stderr
,
"sanitize %p init [%p..%p] (%u bytes)
\n
"
,
context
->
blob
,
context
->
start
,
context
->
end
,
context
->
end
-
context
->
start
);
#endif
...
...
@@ -162,7 +166,7 @@ static HB_GNUC_UNUSED void
_hb_sanitize_fini
(
hb_sanitize_context_t
*
context
,
bool
unlock
)
{
#if HB_DEBUG
#if HB_DEBUG
_SANITIZE
fprintf
(
stderr
,
"sanitize %p fini [%p..%p] %u edit requests
\n
"
,
context
->
blob
,
context
->
start
,
context
->
end
,
context
->
edit_count
);
#endif
...
...
@@ -180,8 +184,8 @@ _hb_sanitize_check (SANITIZE_ARG_DEF,
base
<=
context
->
end
&&
(
unsigned
int
)
(
context
->
end
-
base
)
>=
len
;
#if HB_DEBUG
if
(
sanitize_depth
<
HB_DEBUG
)
\
#if HB_DEBUG
_SANITIZE
if
(
sanitize_depth
<
HB_DEBUG
_SANITIZE
)
\
fprintf
(
stderr
,
"SANITIZE(%p) %-*d-> check [%p..%p] (%d bytes) in [%p..%p] -> %s
\n
"
,
\
base
,
sanitize_depth
,
sanitize_depth
,
...
...
@@ -200,8 +204,8 @@ _hb_sanitize_array (SANITIZE_ARG_DEF,
{
bool
overflows
=
len
>=
((
unsigned
int
)
-
1
)
/
record_size
;
#if HB_DEBUG
if
(
sanitize_depth
<
HB_DEBUG
)
\
#if HB_DEBUG
_SANITIZE
if
(
sanitize_depth
<
HB_DEBUG
_SANITIZE
)
\
fprintf
(
stderr
,
"SANITIZE(%p) %-*d-> array [%p..%p] (%d*%d=%ld bytes) in [%p..%p] -> %s
\n
"
,
\
base
,
sanitize_depth
,
sanitize_depth
,
...
...
@@ -220,7 +224,7 @@ _hb_sanitize_edit (SANITIZE_ARG_DEF,
bool
perm
=
hb_blob_try_writable_inplace
(
context
->
blob
);
context
->
edit_count
++
;
#if HB_DEBUG
#if HB_DEBUG
_SANITIZE
fprintf
(
stderr
,
"SANITIZE(%p) %-*d-> edit(%u) [%p..%p] (%d bytes) in [%p..%p] -> %s
\n
"
,
\
base
,
sanitize_depth
,
sanitize_depth
,
...
...
@@ -268,7 +272,7 @@ struct Sanitizer
/* TODO is_sane() stuff */
retry:
#if HB_DEBUG
#if HB_DEBUG
_SANITIZE
fprintf
(
stderr
,
"Sanitizer %p start %s
\n
"
,
blob
,
__PRETTY_FUNCTION__
);
#endif
...
...
@@ -279,7 +283,7 @@ struct Sanitizer
sane
=
t
->
sanitize
(
SANITIZE_ARG_INIT
);
if
(
sane
)
{
if
(
context
.
edit_count
)
{
#if HB_DEBUG
#if HB_DEBUG
_SANITIZE
fprintf
(
stderr
,
"Sanitizer %p passed first round with %d edits; going a second round %s
\n
"
,
blob
,
context
.
edit_count
,
__PRETTY_FUNCTION__
);
#endif
...
...
@@ -287,7 +291,7 @@ struct Sanitizer
context
.
edit_count
=
0
;
sane
=
t
->
sanitize
(
SANITIZE_ARG_INIT
);
if
(
context
.
edit_count
)
{
#if HB_DEBUG
#if HB_DEBUG
_SANITIZE
fprintf
(
stderr
,
"Sanitizer %p requested %d edits in second round; FAILLING %s
\n
"
,
blob
,
context
.
edit_count
,
__PRETTY_FUNCTION__
);
#endif
...
...
@@ -300,14 +304,14 @@ struct Sanitizer
_hb_sanitize_fini
(
&
context
,
true
);
if
(
edit_count
&&
!
hb_blob_is_writable
(
blob
)
&&
hb_blob_try_writable
(
blob
))
{
/* ok, we made it writable by relocating. try again */
#if HB_DEBUG
#if HB_DEBUG
_SANITIZE
fprintf
(
stderr
,
"Sanitizer %p retry %s
\n
"
,
blob
,
__PRETTY_FUNCTION__
);
#endif
goto
retry
;
}
}
#if HB_DEBUG
#if HB_DEBUG
_SANITIZE
fprintf
(
stderr
,
"Sanitizer %p %s %s
\n
"
,
blob
,
sane
?
"passed"
:
"FAILED"
,
__PRETTY_FUNCTION__
);
#endif
if
(
sane
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录