summaryrefslogtreecommitdiff
path: root/external/libcdr/ubsan.patch
diff options
context:
space:
mode:
Diffstat (limited to 'external/libcdr/ubsan.patch')
-rw-r--r--external/libcdr/ubsan.patch64
1 files changed, 64 insertions, 0 deletions
diff --git a/external/libcdr/ubsan.patch b/external/libcdr/ubsan.patch
new file mode 100644
index 000000000000..316c47a45ab9
--- /dev/null
+++ b/external/libcdr/ubsan.patch
@@ -0,0 +1,64 @@
+--- src/lib/CDRPath.cpp
++++ src/lib/CDRPath.cpp
+@@ -796,7 +796,7 @@ void CDRPath::writeOut(librevenge::RVNGString &path, librevenge::RVNGString &vie
+
+
+ width = qy - py;
+- viewBox.sprintf("%i %i %i %i", 0, 0, (unsigned)(2540*(qx - px)), (unsigned)(2540*(qy - py)));
++ viewBox.sprintf("%i %i %i %i", 0, 0, (int)(2540*(qx - px)), (int)(2540*(qy - py)));
+
+ for (unsigned i = 0; i < vec.count(); ++i)
+ {
+@@ -804,38 +804,38 @@ void CDRPath::writeOut(librevenge::RVNGString &path, librevenge::RVNGString &vie
+ if (vec[i]["librevenge:path-action"]->getStr() == "M")
+ {
+ // 2540 is 2.54*1000, 2.54 in = 1 inch
+- sElement.sprintf("M%i %i", (unsigned)((vec[i]["svg:x"]->getDouble()-px)*2540),
+- (unsigned)((vec[i]["svg:y"]->getDouble()-py)*2540));
++ sElement.sprintf("M%i %i", (int)((vec[i]["svg:x"]->getDouble()-px)*2540),
++ (int)((vec[i]["svg:y"]->getDouble()-py)*2540));
+ path.append(sElement);
+ }
+ else if (vec[i]["librevenge:path-action"]->getStr() == "L")
+ {
+- sElement.sprintf("L%i %i", (unsigned)((vec[i]["svg:x"]->getDouble()-px)*2540),
+- (unsigned)((vec[i]["svg:y"]->getDouble()-py)*2540));
++ sElement.sprintf("L%i %i", (int)((vec[i]["svg:x"]->getDouble()-px)*2540),
++ (int)((vec[i]["svg:y"]->getDouble()-py)*2540));
+ path.append(sElement);
+ }
+ else if (vec[i]["librevenge:path-action"]->getStr() == "C")
+ {
+- sElement.sprintf("C%i %i %i %i %i %i", (unsigned)((vec[i]["svg:x1"]->getDouble()-px)*2540),
+- (unsigned)((vec[i]["svg:y1"]->getDouble()-py)*2540), (unsigned)((vec[i]["svg:x2"]->getDouble()-px)*2540),
+- (unsigned)((vec[i]["svg:y2"]->getDouble()-py)*2540), (unsigned)((vec[i]["svg:x"]->getDouble()-px)*2540),
+- (unsigned)((vec[i]["svg:y"]->getDouble()-py)*2540));
++ sElement.sprintf("C%i %i %i %i %i %i", (int)((vec[i]["svg:x1"]->getDouble()-px)*2540),
++ (int)((vec[i]["svg:y1"]->getDouble()-py)*2540), (int)((vec[i]["svg:x2"]->getDouble()-px)*2540),
++ (int)((vec[i]["svg:y2"]->getDouble()-py)*2540), (int)((vec[i]["svg:x"]->getDouble()-px)*2540),
++ (int)((vec[i]["svg:y"]->getDouble()-py)*2540));
+ path.append(sElement);
+ }
+ else if (vec[i]["librevenge:path-action"]->getStr() == "Q")
+ {
+- sElement.sprintf("Q%i %i %i %i", (unsigned)((vec[i]["svg:x1"]->getDouble()-px)*2540),
+- (unsigned)((vec[i]["svg:y1"]->getDouble()-py)*2540), (unsigned)((vec[i]["svg:x"]->getDouble()-px)*2540),
+- (unsigned)((vec[i]["svg:y"]->getDouble()-py)*2540));
++ sElement.sprintf("Q%i %i %i %i", (int)((vec[i]["svg:x1"]->getDouble()-px)*2540),
++ (int)((vec[i]["svg:y1"]->getDouble()-py)*2540), (int)((vec[i]["svg:x"]->getDouble()-px)*2540),
++ (int)((vec[i]["svg:y"]->getDouble()-py)*2540));
+ path.append(sElement);
+ }
+ else if (vec[i]["librevenge:path-action"]->getStr() == "A")
+ {
+- sElement.sprintf("A%i %i %i %i %i %i %i", (unsigned)((vec[i]["svg:rx"]->getDouble())*2540),
+- (unsigned)((vec[i]["svg:ry"]->getDouble())*2540), (vec[i]["librevenge:rotate"] ? vec[i]["librevenge:rotate"]->getInt() : 0),
++ sElement.sprintf("A%i %i %i %i %i %i %i", (int)((vec[i]["svg:rx"]->getDouble())*2540),
++ (int)((vec[i]["svg:ry"]->getDouble())*2540), (vec[i]["librevenge:rotate"] ? vec[i]["librevenge:rotate"]->getInt() : 0),
+ (vec[i]["librevenge:large-arc"] ? vec[i]["librevenge:large-arc"]->getInt() : 1),
+ (vec[i]["librevenge:sweep"] ? vec[i]["librevenge:sweep"]->getInt() : 1),
+- (unsigned)((vec[i]["svg:x"]->getDouble()-px)*2540), (unsigned)((vec[i]["svg:y"]->getDouble()-py)*2540));
++ (int)((vec[i]["svg:x"]->getDouble()-px)*2540), (int)((vec[i]["svg:y"]->getDouble()-py)*2540));
+ path.append(sElement);
+ }
+ else if (vec[i]["librevenge:path-action"]->getStr() == "Z")