[HarfBuzz] harfbuzz: Branch 'master' - 8 commits
Behdad Esfahbod
behdad at kemper.freedesktop.org
Sun Sep 23 23:13:20 UTC 2018
.circleci/config.yml | 52 ++++++++++++++++++++++++++++++++++++++++++++++
src/hb-blob.cc | 27 +++++++++++++++++++++++
src/hb-ot-post-table.hh | 1
src/hb.hh | 4 ++-
test/api/hb-subset-test.h | 12 +++++++---
test/api/test-font.c | 1
test/api/test-ot-math.c | 4 +++
test/api/test-set.c | 1
test/shaping/run-tests.py | 2 -
9 files changed, 99 insertions(+), 5 deletions(-)
New commits:
commit d7f21777e6a797758ab234555f5f7e07c87278f9
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Sun Sep 23 19:12:52 2018 -0400
[ot-font] Fix leak
Fixes https://github.com/harfbuzz/harfbuzz/issues/1171
I'm glad we have leak-detector bots now.
diff --git a/src/hb-ot-post-table.hh b/src/hb-ot-post-table.hh
index 5f27fd50..f81de37d 100644
--- a/src/hb-ot-post-table.hh
+++ b/src/hb-ot-post-table.hh
@@ -131,6 +131,7 @@ struct post
{
index_to_offset.fini ();
free (gids_sorted_by_name.get ());
+ hb_blob_destroy (blob);
}
inline bool get_glyph_name (hb_codepoint_t glyph,
commit ae39a53f55e6b812defb4c7b48562651c9eb13a3
Author: Ebrahim Byagowi <ebrahim at gnu.org>
Date: Sat Sep 22 14:22:17 2018 +0330
Add bots with address- and thread-sanitizer
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 5ad1ae13..671f49d7 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -79,6 +79,54 @@ jobs:
- run: make
- run: LD_LIBRARY_PATH="$PWD/freetype-2.9/objs/.libs" make check || .ci/fail.sh
+ clang-asan:
+ docker:
+ - image: ubuntu:18.04
+ steps:
+ - checkout
+ - run: apt update || true
+ - run: apt install -y clang-6.0 binutils libtool autoconf automake make pkg-config gtk-doc-tools ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip
+ - run: pip install fonttools
+ - run: CPPFLAGS="-fsanitize=address" LDFLAGS="-fsanitize=address" CC=clang-6.0 CXX=clang++-6.0 ./autogen.sh --with-freetype --with-glib --with-cairo --with-icu --with-graphite2
+ - run: make
+ - run: make check || .ci/fail.sh
+
+ clang-msan:
+ docker:
+ - image: ubuntu:18.04
+ steps:
+ - checkout
+ - run: apt update || true
+ - run: apt install -y clang-6.0 binutils libtool autoconf automake make pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip
+ - run: pip install fonttools
+ - run: CPPFLAGS="-fsanitize=memory" LDFLAGS="-fsanitize=memory" CC=clang-6.0 CXX=clang++-6.0 ./autogen.sh --with-freetype --with-glib --with-cairo --with-icu --with-graphite2
+ - run: make
+ - run: make check || .ci/fail.sh
+
+ clang-tsan:
+ docker:
+ - image: ubuntu:18.04
+ steps:
+ - checkout
+ - run: apt update || true
+ - run: apt install -y clang-6.0 binutils libtool autoconf automake make pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip
+ - run: pip install fonttools
+ - run: CPPFLAGS="-fsanitize=thread" LDFLAGS="-fsanitize=thread" CC=clang-6.0 CXX=clang++-6.0 ./autogen.sh --with-freetype --with-glib --with-cairo --with-icu --with-graphite2
+ - run: make
+ - run: make check || .ci/fail.sh
+
+ clang-ubsan:
+ docker:
+ - image: ubuntu:18.04
+ steps:
+ - checkout
+ - run: apt update || true
+ - run: apt install -y clang-6.0 binutils libtool autoconf automake make pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip
+ - run: pip install fonttools
+ - run: CPPFLAGS="-fsanitize=undefined" LDFLAGS="-fsanitize=undefined" CC=clang-6.0 CXX=clang++-6.0 ./autogen.sh --with-freetype --with-glib --with-cairo --with-icu --with-graphite2
+ - run: make
+ - run: make check || .ci/fail.sh
+
fedora-outoftreebuild:
docker:
- image: fedora
@@ -200,6 +248,10 @@ workflows:
- alpine-O3-NOMMAP
- archlinux-debug-O0-py3
- clang-O3-O0
+ - clang-asan
+ - clang-msan
+ - clang-tsan
+ - clang-ubsan
- fedora-outoftreebuild
# cmake based builds
commit 24dd6c1a9d8d571c30dce4d39c1975b1d1cedc2a
Author: Matt Oliver <protogonoi at gmail.com>
Date: Sun Sep 23 18:08:30 2018 +1000
src/hb-blob.cc: Fix mmap functionality with UWP.
diff --git a/src/hb-blob.cc b/src/hb-blob.cc
index a335df30..fca3c910 100644
--- a/src/hb-blob.cc
+++ b/src/hb-blob.cc
@@ -574,18 +574,45 @@ fail_without_close:
wchar_t * wchar_file_name = (wchar_t *) malloc (sizeof (wchar_t) * size);
if (unlikely (wchar_file_name == nullptr)) goto fail_without_close;
mbstowcs (wchar_file_name, file_name, size);
+#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_PC_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP)
+ {
+ CREATEFILE2_EXTENDED_PARAMETERS ceparams = { 0 };
+ ceparams.dwSize = sizeof(CREATEFILE2_EXTENDED_PARAMETERS);
+ ceparams.dwFileAttributes = FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED & 0xFFFF;
+ ceparams.dwFileFlags = FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED & 0xFFF00000;
+ ceparams.dwSecurityQosFlags = FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED & 0x000F0000;
+ ceparams.lpSecurityAttributes = nullptr;
+ ceparams.hTemplateFile = nullptr;
+ fd = CreateFile2 (wchar_file_name, GENERIC_READ, FILE_SHARE_READ,
+ OPEN_EXISTING, &ceparams);
+ }
+#else
fd = CreateFileW (wchar_file_name, GENERIC_READ, FILE_SHARE_READ, nullptr,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,
nullptr);
+#endif
free (wchar_file_name);
if (unlikely (fd == INVALID_HANDLE_VALUE)) goto fail_without_close;
+#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_PC_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP)
+ {
+ LARGE_INTEGER length;
+ GetFileSizeEx (fd, &length);
+ file->length = length.LowPart;
+ file->mapping = CreateFileMappingFromApp (fd, nullptr, PAGE_READONLY, length.QuadPart, nullptr);
+ }
+#else
file->length = (unsigned long) GetFileSize (fd, nullptr);
file->mapping = CreateFileMapping (fd, nullptr, PAGE_READONLY, 0, 0, nullptr);
+#endif
if (unlikely (file->mapping == nullptr)) goto fail;
+#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_PC_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP)
+ file->contents = (char *) MapViewOfFileFromApp (file->mapping, FILE_MAP_READ, 0, 0);
+#else
file->contents = (char *) MapViewOfFile (file->mapping, FILE_MAP_READ, 0, 0, 0);
+#endif
if (unlikely (file->contents == nullptr)) goto fail;
CloseHandle (fd);
diff --git a/src/hb.hh b/src/hb.hh
index 557ae6b3..631592de 100644
--- a/src/hb.hh
+++ b/src/hb.hh
@@ -237,7 +237,9 @@ struct _hb_alignof
# undef _WIN32_WINNT
# endif
# ifndef _WIN32_WINNT
-# define _WIN32_WINNT 0x0600
+# if !defined(WINAPI_FAMILY) || !(WINAPI_FAMILY==WINAPI_FAMILY_PC_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP)
+# define _WIN32_WINNT 0x0600
+# endif
# endif
# ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN 1
commit b7f1bbc2f8b14a402fa9e42e88919dc0173373ce
Author: Khaled Hosny <khaledhosny at eglug.org>
Date: Sat Sep 22 16:41:56 2018 +0200
[test] Fix printing subprocess error messages
Decode the string as Python 3 returns bytes string, and also don’t
assume that it ends with a new line.
diff --git a/test/shaping/run-tests.py b/test/shaping/run-tests.py
index 73b61c21..915536b9 100755
--- a/test/shaping/run-tests.py
+++ b/test/shaping/run-tests.py
@@ -9,7 +9,7 @@ def cmd(command):
p = subprocess.Popen (
command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p.wait ()
- print (p.stderr.read (), end="") # file=sys.stderr
+ print (p.stderr.read ().decode ("utf-8").strip ()) # file=sys.stderr
return p.stdout.read ().decode ("utf-8").strip (), p.returncode
commit 403019482b0d7f17fbdb5def2be5f43e28bafcf3
Author: Ebrahim Byagowi <ebrahim at gnu.org>
Date: Sat Sep 22 17:24:03 2018 +0330
Fix test-subset-* leak issues
See also https://github.com/harfbuzz/harfbuzz/pull/1169
diff --git a/test/api/hb-subset-test.h b/test/api/hb-subset-test.h
index afd553a0..0318fa7b 100644
--- a/test/api/hb-subset-test.h
+++ b/test/api/hb-subset-test.h
@@ -51,12 +51,18 @@ static inline hb_face_t *
hb_subset_test_open_font (const char *font_path)
{
#if GLIB_CHECK_VERSION(2,37,2)
- char* path = g_test_build_filename(G_TEST_DIST, font_path, NULL);
+ char* path = g_test_build_filename (G_TEST_DIST, font_path, NULL);
#else
- char* path = g_strdup(font_path);
+ char* path = g_strdup (font_path);
#endif
- return hb_face_create (hb_blob_create_from_file (path), 0);
+ hb_blob_t* blob = hb_blob_create_from_file (path);
+ hb_face_t* face = hb_face_create (blob, 0);
+ hb_blob_destroy (blob);
+
+ g_free (path);
+
+ return face;
}
static inline hb_subset_input_t *
commit f6ebe1f4dc95a7c4b3a0af23086873a11867c1d9
Author: Ebrahim Byagowi <ebrahim at gnu.org>
Date: Sat Sep 22 17:05:52 2018 +0330
Fix test-ot-math leak issue
See also https://github.com/harfbuzz/harfbuzz/pull/1169
diff --git a/test/api/test-ot-math.c b/test/api/test-ot-math.c
index d071c889..7f500157 100644
--- a/test/api/test-ot-math.c
+++ b/test/api/test-ot-math.c
@@ -100,10 +100,14 @@ test_has_data (void)
hb_face = hb_face_get_empty ();
hb_font = hb_font_create (hb_face);
g_assert(!hb_ot_math_has_data (hb_face)); // MATH table not available
+ hb_font_destroy (hb_font);
+ hb_face_destroy (hb_face);
hb_font = hb_font_get_empty ();
hb_face = hb_font_get_face (hb_font);
g_assert(!hb_ot_math_has_data (hb_face)); // MATH table not available
+ hb_font_destroy (hb_font);
+ hb_face_destroy (hb_face);
cleanupFreeType();
}
commit 669ac81ac52e9d559324db851a9ee46ef651e7b0
Author: Ebrahim Byagowi <ebrahim at gnu.org>
Date: Sat Sep 22 16:49:23 2018 +0330
Fix test-set leak issue
See also https://github.com/harfbuzz/harfbuzz/pull/1169
diff --git a/test/api/test-set.c b/test/api/test-set.c
index 338a610c..eb2f22ec 100644
--- a/test/api/test-set.c
+++ b/test/api/test-set.c
@@ -262,6 +262,7 @@ test_set_algebra (void)
hb_set_destroy (s);
hb_set_destroy (o);
+ hb_set_destroy (o2);
}
static void
commit ef9307fd2227bf0f750d8f7fafae466affc81454
Author: Ebrahim Byagowi <ebrahim at gnu.org>
Date: Sat Sep 22 16:45:31 2018 +0330
Fix test-font leak issue
See also https://github.com/harfbuzz/harfbuzz/pull/1169
diff --git a/test/api/test-font.c b/test/api/test-font.c
index 527dfcdc..4a2393ec 100644
--- a/test/api/test-font.c
+++ b/test/api/test-font.c
@@ -361,6 +361,7 @@ test_fontfuncs_subclassing (void)
hb_font_destroy (font3);
+ hb_font_destroy (font2);
}
More information about the HarfBuzz
mailing list