X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fmodules%2Fswftools.c;h=37c8e8b2b11b362df2575420eed90f4f1f2a9b47;hb=e9dc83904a5df2c24cc62004be16cecdaea83797;hp=5f16339431df54bc02e1aac512df0c7bb46ab29b;hpb=1dc3d10e7596fa9b38befe04b8419103e02c492e;p=swftools.git diff --git a/lib/modules/swftools.c b/lib/modules/swftools.c index 5f16339..37c8e8b 100644 --- a/lib/modules/swftools.c +++ b/lib/modules/swftools.c @@ -26,8 +26,11 @@ #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;