Index: third_party/agg23/0000-bug-466.patch |
diff --git a/third_party/agg23/0000-bug-466.patch b/third_party/agg23/0000-bug-466.patch |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3217b3838a9fdd07d96dc7840d4fd9de4b329381 |
--- /dev/null |
+++ b/third_party/agg23/0000-bug-466.patch |
@@ -0,0 +1,45 @@ |
+diff --git a/third_party/agg23/agg_math_stroke.h b/third_party/agg23/agg_math_stroke.h |
+index 6d7ba8a..2b06b1b 100644 |
+--- a/third_party/agg23/agg_math_stroke.h |
++++ b/third_party/agg23/agg_math_stroke.h |
+@@ -60,28 +60,30 @@ void stroke_calc_arc(VertexConsumer& out_vertices, |
+ } |
+ da = FXSYS_acos(width / (width + ((1.0f / 8) / approximation_scale))) * 2; |
+ out_vertices.add(coord_type(x + dx1, y + dy1)); |
+- if(!ccw) { |
+- if(a1 > a2) { |
+- a2 += 2 * FX_PI; |
++ if (da > 0) { |
++ if (!ccw) { |
++ if (a1 > a2) { |
++ a2 += 2 * FX_PI; |
+ } |
+ a2 -= da / 4; |
+ a1 += da; |
+- while(a1 < a2) { |
++ while (a1 < a2) { |
+ out_vertices.add(coord_type(x + (width * FXSYS_cos(a1)), |
+ y + (width * FXSYS_sin(a1)))); |
+- a1 += da; |
++ a1 += da; |
+ } |
+- } else { |
+- if(a1 < a2) { |
+- a2 -= 2 * FX_PI; |
++ } else { |
++ if (a1 < a2) { |
++ a2 -= 2 * FX_PI; |
+ } |
+ a2 += da / 4; |
+ a1 -= da; |
+- while(a1 > a2) { |
++ while (a1 > a2) { |
+ out_vertices.add(coord_type(x + (width * FXSYS_cos(a1)), |
+ y + (width * FXSYS_sin(a1)))); |
+- a1 -= da; |
++ a1 -= da; |
+ } |
++ } |
+ } |
+ out_vertices.add(coord_type(x + dx2, y + dy2)); |
+ } |