added bit checking in swf_ShapeSetCurve().
[swftools.git] / lib / modules / swfshape.c
index 9753dfc..850bead 100644 (file)
@@ -293,7 +293,7 @@ int swf_ShapeAddFillStyle(SHAPE * s,U8 type,MATRIX * m,RGBA * color,U16 id_bitma
     if (!s->fillstyle.data) return -1;
   }
 
-  // set fillstyle  (no gradients yet!)
+  // set fillstyle
   
   s->fillstyle.data[s->fillstyle.n].type = type; 
   s->fillstyle.data[s->fillstyle.n].id_bitmap = id_bitmap;
@@ -421,7 +421,7 @@ int swf_ShapeSetLine(TAG * t,SHAPE * s,S32 x,S32 y)
     b = swf_CountBits(y,b);
     if (b<2) b=2;
     if(b-2 >= 16) {
-       fprintf(stderr, "Bit overflow in swf_ShapeSetLine(1)- %d\n", b);
+       fprintf(stderr, "Bit overflow in swf_ShapeSetLine(1)- %d (%d,%d)\n", b, x,y);
        fflush(stdout);
        b = 17;
     }
@@ -437,7 +437,7 @@ int swf_ShapeSetLine(TAG * t,SHAPE * s,S32 x,S32 y)
     if(b<2) 
         b=2;
     if(b-2 >= 16) {
-       fprintf(stderr, "Bit overflow in swf_ShapeSetLine(2)- %d\n", b);
+       fprintf(stderr, "Bit overflow in swf_ShapeSetLine(2)- %d (%d)\n", b, y);
        b = 17;
     }
     swf_SetBits(t, b-2, 4);
@@ -449,7 +449,7 @@ int swf_ShapeSetLine(TAG * t,SHAPE * s,S32 x,S32 y)
     if(b<2) 
         b=2;
     if(b-2 >= 16) {
-       fprintf(stderr, "Bit overflow in swf_ShapeSetLine(3)- %d\n", b);
+       fprintf(stderr, "Bit overflow in swf_ShapeSetLine(3)- %d (%d)\n", b, x);
        b = 17;
     }
     swf_SetBits(t, b-2, 4);
@@ -470,6 +470,11 @@ int swf_ShapeSetCurve(TAG * t,SHAPE * s,S32 x,S32 y,S32 ax,S32 ay)
   b = swf_CountBits(x,b);
   b = swf_CountBits(y,b);
 
+  if(b-2 >= 16) {
+       fprintf(stderr, "Bit overflow in swf_ShapeSetCurve- %d (%d,%d,%d,%d)\n", b, ax,ay,x,y);
+       b = 17;
+  }
+
   swf_SetBits(t,b-2,4);
   swf_SetBits(t,x,b);
   swf_SetBits(t,y,b);