summaryrefslogtreecommitdiff
path: root/external
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2015-06-29 12:26:16 +0200
committerStephan Bergmann <sbergman@redhat.com>2015-06-29 12:26:16 +0200
commit37b67904b2c71ed0997d4f4e5b929398fb14d48e (patch)
tree8a2a37c4c770e99489f457215088c0595d9493d5 /external
parent8ba8c1018722a35f75f9906db4998dabda1aba4a (diff)
external/graphite: work around -fsanitize=nonnull-attribute/vptr
Change-Id: Ic0766555dc7a04bbb8c7ad8f9cba3d74d84c59db
Diffstat (limited to 'external')
-rw-r--r--external/graphite/UnpackedTarball_graphite.mk3
-rw-r--r--external/graphite/ubsan.patch51
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);
+ }
+
+