fixed BUTTONSOUND/BUTTONCXFORM parsing
[swftools.git] / lib / modules / swftools.c
index 5f16339..1099bc3 100644 (file)
 #define S64 long long
 SFIXED RFXSWF_SP(SFIXED a1,SFIXED a2,SFIXED b1,SFIXED b2)
 { S64 a;
-  a = (S64)a1*(S64)b1+(S64)a2*(S64)b2;
-  return (SFIXED)(a>>16);
+  a = ((S64)a1*(S64)b1+(S64)a2*(S64)b2)>>16;
+  SFIXED result = (SFIXED)(a);
+  if(a!=result) 
+      fprintf(stderr, "Warning: overflow in matrix multiplication");
+  return result;
 }
 SFIXED RFXSWF_QFIX(int zaehler,int nenner) // bildet Quotient von zwei INTs in SFIXED
 { S64 z = zaehler<<16;
@@ -483,7 +486,7 @@ void enumerateUsedIDs(TAG * tag, int base, void (*callback)(TAG*, int, void*), v
     tag->pos = 0;
     switch(tag->id)
     {
-       case ST_DEFINEBUTTONCXFORM: {
+       case ST_DEFINEBUTTONSOUND: {
            int t;
            callback(tag, tag->pos + base, callback_data);
            for(t=0;t<4;t++) {
@@ -510,7 +513,7 @@ void enumerateUsedIDs(TAG * tag, int base, void (*callback)(TAG*, int, void*), v
                }
            }
         } break;
-       case ST_DEFINEBUTTONSOUND:
+       case ST_DEFINEBUTTONCXFORM:
            callback(tag, tag->pos + base, callback_data); //button id
        break;