Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
83ea2771
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看板
提交
83ea2771
编写于
7月 10, 2018
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add posix_memalign() fallback
上级
292c100d
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
41 addition
and
1 deletion
+41
-1
configure.ac
configure.ac
+1
-1
src/hb-private.hh
src/hb-private.hh
+40
-0
未找到文件。
configure.ac
浏览文件 @
83ea2771
...
...
@@ -78,7 +78,7 @@ GTK_DOC_CHECK([1.15],[--flavour no-tmpl])
])
# Functions and headers
AC_CHECK_FUNCS(atexit mprotect sysconf getpagesize mmap isatty newlocale strtod_l)
AC_CHECK_FUNCS(atexit mprotect sysconf getpagesize mmap isatty newlocale strtod_l
posix_memalign
)
save_libs="$LIBS"
LIBS="$LIBS -lm"
...
...
src/hb-private.hh
浏览文件 @
83ea2771
...
...
@@ -58,6 +58,7 @@
#define HB_PASTE1(a,b) a##b
#define HB_PASTE(a,b) HB_PASTE1(a,b)
/* Compile-time custom allocator support. */
#if defined(hb_malloc_impl) \
...
...
@@ -72,6 +73,14 @@ extern "C" void hb_free_impl(void *ptr);
#define calloc hb_calloc_impl
#define realloc hb_realloc_impl
#define free hb_free_impl
#if defined(hb_memalign_impl
extern
"C"
int
hb_memalign_impl
(
void
**
memptr
,
size_t
alignment
,
size_t
size
);
#define posix_memalign hb_memalign_impl
#else
#undef HAVE_POSIX_MEMALIGN
#endif
#endif
...
...
@@ -550,6 +559,10 @@ _hb_ceil_to_4 (unsigned int v)
return
((
v
-
1
)
|
3
)
+
1
;
}
static
inline
bool
_hb_ispow2
(
unsigned
int
v
)
{
return
0
==
(
v
&
(
v
-
1
));
}
/*
...
...
@@ -1272,4 +1285,31 @@ _hb_round (double x)
#endif
/* fallback for posix_memalign() */
static
inline
int
_hb_memalign
(
void
**
memptr
,
size_t
alignment
,
size_t
size
)
{
if
(
unlikely
(
!
_hb_ispow2
(
alignment
)
||
!
alignment
||
0
!=
(
alignment
&
(
sizeof
(
void
*
)
-
1
))))
return
EINVAL
;
char
*
p
=
(
char
*
)
malloc
(
size
+
alignment
-
1
);
if
(
unlikely
(
!
p
))
return
ENOMEM
;
size_t
off
=
(
size_t
)
p
&
(
alignment
-
1
);
if
(
off
)
p
+=
alignment
-
off
;
*
memptr
=
(
void
*
)
p
;
return
0
;
}
#if !defined(posix_memalign) && !defined(HAVE_POSIX_MEMALIGN)
#define posix_memalign _hb_memalign
#endif
#endif
/* HB_PRIVATE_HH */
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录