[HarfBuzz] harfbuzz: Branch 'master' - 10 commits

Behdad Esfahbod behdad at kemper.freedesktop.org
Sat Oct 20 19:21:37 UTC 2018


 .circleci/config.yml                                                               |    2 -
 TODO                                                                               |    2 -
 appveyor.yml                                                                       |   15 ++++++++++
 src/hb-aat-layout-common.hh                                                        |    2 -
 src/hb-aat-layout-kerx-table.hh                                                    |    5 ++-
 src/hb-blob.cc                                                                     |    6 ++--
 test/api/test-font.c                                                               |    2 +
 test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5688420752424960           |binary
 test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5688420752424960 |binary
 test/fuzzing/run-shape-fuzzer-tests.py                                             |    4 ++
 util/options.hh                                                                    |    2 -
 11 files changed, 29 insertions(+), 11 deletions(-)

New commits:
commit 68b705076808d4b0a4ac3bfa945b8f9ae23db1df
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Sat Oct 20 12:09:41 2018 -0700

    [kerx] Fix sanitize of KerxSubtableFormat2::array read
    
    Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11033

diff --git a/src/hb-aat-layout-kerx-table.hh b/src/hb-aat-layout-kerx-table.hh
index 64257809..e8eb43b8 100644
--- a/src/hb-aat-layout-kerx-table.hh
+++ b/src/hb-aat-layout-kerx-table.hh
@@ -103,7 +103,8 @@ struct KerxSubTableFormat0
   inline bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
-    return_trace (likely (pairs.sanitize (c)));
+    return_trace (likely (c->check_struct (this) &&
+			  pairs.sanitize (c)));
   }
 
   protected:
@@ -275,7 +276,7 @@ struct KerxSubTableFormat2
   inline bool sanitize (hb_sanitize_context_t *c) const
   {
     TRACE_SANITIZE (this);
-    return_trace (likely (rowWidth.sanitize (c) &&
+    return_trace (likely (c->check_struct (this) &&
 			  leftClassTable.sanitize (c, this) &&
 			  rightClassTable.sanitize (c, this) &&
 			  c->check_range (this, array)));
commit 00fdbca4f6a5c4623b9c4838da502cccce8aaa74
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Sat Oct 20 12:04:51 2018 -0700

    [aat] Fix LookupFormat10 sanitize
    
    Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11060

diff --git a/src/hb-aat-layout-common.hh b/src/hb-aat-layout-common.hh
index 60724c18..a99ccaf9 100644
--- a/src/hb-aat-layout-common.hh
+++ b/src/hb-aat-layout-common.hh
@@ -285,7 +285,7 @@ struct LookupFormat10
 		valueArrayZ;	/* The lookup values (indexed by the glyph index
 				 * minus the value of firstGlyph). */
   public:
-  DEFINE_SIZE_ARRAY (6, valueArrayZ);
+  DEFINE_SIZE_ARRAY (8, valueArrayZ);
 };
 
 template <typename T>
commit f11c557662dee16a59bb54276c50a96e4e675201
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Sat Oct 20 11:56:30 2018 -0700

    [test] Fix leak

diff --git a/test/api/test-font.c b/test/api/test-font.c
index 728f9b96..5ceb131a 100644
--- a/test/api/test-font.c
+++ b/test/api/test-font.c
@@ -426,6 +426,8 @@ test_fontfuncs_parallels (void)
   /* Just test that calling get_nominal_glyph doesn't infinite-loop. */
   hb_codepoint_t glyph;
   hb_font_get_nominal_glyph (font2, 0x0020u, &glyph);
+
+  hb_font_destroy (font2);
 }
 
 static void
commit 440a675c7cc72c7c77b4ad7b20c855c53808ef48
Author: Ebrahim Byagowi <ebrahim at gnu.org>
Date:   Sat Oct 20 21:13:25 2018 +0330

    [TODO] Remove BCP 47 language handling item
    
    Closes https://github.com/harfbuzz/harfbuzz/issues/1286

diff --git a/TODO b/TODO
index d2c5812a..d8e41050 100644
--- a/TODO
+++ b/TODO
@@ -15,8 +15,6 @@ API additions
 
 - Add sanitize API.
 
-- BCP 47 language handling / API (language_matches?)
-
 - Add query / enumeration API for aalt-like features?
 
 - Add segmentation API
commit d39acc5a95f968b0dbfd5a942abda606d9aa3343
Author: Ebrahim Byagowi <ebrahim at gnu.org>
Date:   Sat Oct 20 12:20:30 2018 +0330

    [fuzzing] Add new testcases

diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5688420752424960 b/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5688420752424960
new file mode 100644
index 00000000..1fe962b8
Binary files /dev/null and b/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5688420752424960 differ
diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5688420752424960 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5688420752424960
new file mode 100644
index 00000000..e9f01a23
Binary files /dev/null and b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5688420752424960 differ
commit 1e55e21dea78aaaddc0715e7df96fd198ec8f78a
Merge: 964ae32a d084719f
Author: Ebrahim Byagowi <ebrahim at gnu.org>
Date:   Sat Oct 20 07:45:46 2018 +0330

    Merge pull request #1283 from khaledhosny/cygwin
    
    Cygwin fixes and CI build

commit 964ae32aac793540a49c44efab878592394d48db
Author: Ebrahim Byagowi <ebrahim at gnu.org>
Date:   Sat Oct 20 07:39:18 2018 +0330

    Run valgrind on run-shape-fuzzer only when RUN_VALGRIND is set (#1285)

diff --git a/.circleci/config.yml b/.circleci/config.yml
index d661a14e..e73f53ca 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -102,7 +102,7 @@ jobs:
       - run: make -j32
       # run-shape-fuzzer-tests.py automatically runs valgrind if see available
       # but test/api runs it by request, we probably should normalize the approaches
-      - run: make check && make -Ctest/api check-valgrind || .ci/fail.sh
+      - run: RUN_VALGRIND=1 make check && make -Ctest/api check-valgrind || .ci/fail.sh
       # informational for now
       - run: make -Ctest/api check-symbols || true
 
diff --git a/test/fuzzing/run-shape-fuzzer-tests.py b/test/fuzzing/run-shape-fuzzer-tests.py
index dcdab671..53c4f501 100755
--- a/test/fuzzing/run-shape-fuzzer-tests.py
+++ b/test/fuzzing/run-shape-fuzzer-tests.py
@@ -67,7 +67,9 @@ please provide it as the first argument to the tool""")
 print ('hb_shape_fuzzer:', hb_shape_fuzzer)
 fails = 0
 
-valgrind = which ('valgrind')
+valgrind = None
+if os.environ.get('RUN_VALGRIND', ''):
+	valgrind = which ('valgrind')
 
 parent_path = os.path.join (srcdir, "fonts")
 for file in os.listdir (parent_path):
commit d084719ff5a9e0e363bf352037f85b884bff11a7
Author: Khaled Hosny <khaledhosny at eglug.org>
Date:   Sat Oct 20 00:18:36 2018 +0200

    Add Cygwin CI build
    
    Fixes https://github.com/harfbuzz/harfbuzz/issues/1274

diff --git a/appveyor.yml b/appveyor.yml
index f10078fd..bf982199 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -28,9 +28,19 @@ environment:
       MINGW_CHOST: i686-w64-mingw32
       MSYS2_ARCH: i686
 
+    - compiler: cygwin
+      CYGWIN_PREFIX: C:\Cygwin64
+      CYGWIN_ARCH: x86_64
+   # Lots of test failures here!
+   #- compiler: cygwin
+   #  CYGWIN_PREFIX: C:\Cygwin
+   #  CYGWIN_ARCH: x86
+
+
 install:
   - 'if "%compiler%"=="msys2" C:\msys64\usr\bin\bash -lc "pacman --force --noconfirm -Sy && pacman --noconfirm --force -S pacman-mirrors && pacman --force -Syu --noconfirm"'
   - C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S mingw-w64-x86_64-ragel"
+  - 'if "%compiler%"=="cygwin" %CYGWIN_PREFIX%\setup-%CYGWIN_ARCH%.exe -g -q -P cygwin-devel,libfreetype-devel,libcairo-devel,libicu-devel,gcc,gcc-g++,gobject-introspection,libglib2.0-devel,libgraphite2-devel,pkg-config,python2'
 
 build_script:
   - 'if "%compiler%"=="msvc" if not "%platform%"=="ARM" vcpkg install glib:%triplet% freetype:%triplet% cairo:%triplet%'
@@ -49,8 +59,13 @@ build_script:
   - 'if "%compiler%"=="msys2" C:\msys64\usr\bin\bash -lc "curl https://raw.githubusercontent.com/mirror/mingw-w64/023eb04c396d4e8d8fcf604cfababc53dae13398/mingw-w64-headers/include/dwrite_1.h > %MINGW_PREFIX%/%MINGW_CHOST%/include/dwrite_1.h"'
   - 'if "%compiler%"=="msys2" C:\msys64\usr\bin\bash -lc "cd $APPVEYOR_BUILD_FOLDER; PATH=$PATH:/mingw64/bin:/mingw32/bin; ./autogen.sh --with-uniscribe --with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-graphite2 --with-directwrite --build=%MINGW_CHOST% --host=%MINGW_CHOST% --prefix=%MINGW_PREFIX%; make; make check || .ci/fail.sh"'
 
+  - 'if "%compiler%"=="cygwin" set PATH=%PATH%;c:\msys64\mingw64\bin' # msys2 is added just for having "ragel" on PATH
+  - 'if "%compiler%"=="cygwin" curl https://raw.githubusercontent.com/mirror/mingw-w64/023eb04c396d4e8d8fcf604cfababc53dae13398/mingw-w64-headers/include/dwrite_1.h -o %CYGWIN_PREFIX%\usr\include\dwrite_1.h'
+  - 'if "%compiler%"=="cygwin" %CYGWIN_PREFIX%\bin\bash -lc "cd $APPVEYOR_BUILD_FOLDER; ./autogen.sh --with-uniscribe --with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-graphite2 --with-directwrite; make; make check || .ci/fail.sh"'
+
 cache:
   - c:\tools\vcpkg\installed\
+  - '%CYGWIN_PREFIX%\var\cache\setup'
 
 notifications:
   - provider: Email
commit cf92cb7e002f479505fed8c2c55ab12dcbea2d83
Author: Khaled Hosny <khaledhosny at eglug.org>
Date:   Fri Oct 19 22:21:39 2018 +0200

    Use g_strdup instead of strdup
    
    Cygwin does not seem to have strdup.

diff --git a/util/options.hh b/util/options.hh
index 3749b99b..dd628590 100644
--- a/util/options.hh
+++ b/util/options.hh
@@ -586,7 +586,7 @@ struct output_options_t : option_group_t
       if (output_format)
       {
 	  output_format++; /* skip the dot */
-	  output_format = strdup (output_format);
+	  output_format = g_strdup (output_format);
       }
     }
 
commit 30cbe6158de1ddc0546d55e4edc1fe264e1b86ef
Author: Khaled Hosny <khaledhosny at eglug.org>
Date:   Fri Oct 19 22:04:56 2018 +0200

    Use O_BINARY instead of _O_BINARY
    
    Cygwin does not seem to have the later

diff --git a/src/hb-blob.cc b/src/hb-blob.cc
index edee6730..368491c0 100644
--- a/src/hb-blob.cc
+++ b/src/hb-blob.cc
@@ -487,8 +487,8 @@ hb_blob_t::try_make_writable (void)
 #if defined(_WIN32) || defined(__CYGWIN__)
 # include <windows.h>
 #else
-# ifndef _O_BINARY
-#  define _O_BINARY 0
+# ifndef O_BINARY
+#  define O_BINARY 0
 # endif
 #endif
 
@@ -540,7 +540,7 @@ hb_blob_create_from_file (const char *file_name)
   hb_mapped_file_t *file = (hb_mapped_file_t *) calloc (1, sizeof (hb_mapped_file_t));
   if (unlikely (!file)) return hb_blob_get_empty ();
 
-  int fd = open (file_name, O_RDONLY | _O_BINARY, 0);
+  int fd = open (file_name, O_RDONLY | O_BINARY, 0);
   if (unlikely (fd == -1)) goto fail_without_close;
 
   struct stat st;


More information about the HarfBuzz mailing list