diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2015-06-29 12:26:16 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2015-06-29 12:26:16 +0200 |
commit | 37b67904b2c71ed0997d4f4e5b929398fb14d48e (patch) | |
tree | 8a2a37c4c770e99489f457215088c0595d9493d5 /external/graphite | |
parent | 8ba8c1018722a35f75f9906db4998dabda1aba4a (diff) |
external/graphite: work around -fsanitize=nonnull-attribute/vptr
Change-Id: Ic0766555dc7a04bbb8c7ad8f9cba3d74d84c59db
Diffstat (limited to 'external/graphite')
-rw-r--r-- | external/graphite/UnpackedTarball_graphite.mk | 3 | ||||
-rw-r--r-- | external/graphite/ubsan.patch | 51 |
2 files changed, 54 insertions, 0 deletions
diff --git a/external/graphite/UnpackedTarball_graphite.mk b/external/graphite/UnpackedTarball_graphite.mk index c7fa86e0e149..c0b9e0d8d686 100644 --- a/external/graphite/UnpackedTarball_graphite.mk +++ b/external/graphite/UnpackedTarball_graphite.mk @@ -11,10 +11,13 @@ $(eval $(call gb_UnpackedTarball_UnpackedTarball,graphite)) $(eval $(call gb_UnpackedTarball_set_tarball,graphite,$(GRAPHITE_TARBALL))) +$(eval $(call gb_UnpackedTarball_set_patchlevel,graphite,0)) + # http://projects.palaso.org/issues/1115 $(eval $(call gb_UnpackedTarball_add_patches,graphite,\ external/graphite/graphite2.issue1115.patch.1 \ external/graphite/graphite2.win64.patch.1 \ + external/graphite/ubsan.patch \ )) # vim: set noet sw=4 ts=4: diff --git a/external/graphite/ubsan.patch b/external/graphite/ubsan.patch new file mode 100644 index 000000000000..b1617b138630 --- /dev/null +++ b/external/graphite/ubsan.patch @@ -0,0 +1,51 @@ +--- src/Pass.cpp ++++ src/Pass.cpp +@@ -294,7 +294,7 @@ + s->rules = begin; + s->rules_end = (end - begin <= FiniteStateMachine::MAX_RULES)? end : + begin + FiniteStateMachine::MAX_RULES; +- qsort(begin, end - begin, sizeof(RuleEntry), &cmpRuleEntry); ++ if (end != begin) qsort(begin, end - begin, sizeof(RuleEntry), &cmpRuleEntry); + } + + return true; +--- src/gr_face.cpp ++++ src/gr_face.cpp +@@ -87,7 +87,7 @@ + + Face *res = new Face(appFaceHandle, *ops); + if (res && load_face(*res, faceOptions)) +- return static_cast<gr_face *>(res); ++ return reinterpret_cast<gr_face *>(res); + + delete res; + return 0; +@@ -195,7 +195,7 @@ + + void gr_face_destroy(gr_face *face) + { +- delete face; ++ delete static_cast<Face *>(face); + } + + +--- src/gr_font.cpp ++++ src/gr_font.cpp +@@ -50,7 +50,7 @@ + if (face == 0) return 0; + + Font * const res = new Font(ppm, *face, appFontHandle, font_ops); +- return static_cast<gr_font*>(res); ++ return reinterpret_cast<gr_font*>(res); + } + + gr_font* gr_make_font_with_advance_fn(float ppm/*pixels per em*/, const void* appFontHandle/*non-NULL*/, gr_advance_fn getAdvance, const gr_face * face/*needed for scaling*/) +@@ -61,7 +61,7 @@ + + void gr_font_destroy(gr_font *font) + { +- delete font; ++ delete static_cast<Font *>(font); + } + + |