added opengl check
[swftools.git] / src / swfc.c
index eb18eba..f2224a1 100644 (file)
@@ -816,7 +816,8 @@ TAG* removeFromTo(TAG*from, TAG*to)
     TAG*save = from->prev;
     while(from!=to) {
        TAG*next = from->next;
-       swf_DeleteTag(from);
+       if(swf_isAllowedSpriteTag(from))
+           swf_DeleteTag(from);
        from = next;
     }
     save->next = 0;
@@ -953,9 +954,6 @@ static void s_endSprite()
 {
     SRECT r = currentrect;
 
-    if(stack[stackpos].cut)
-       tag = removeFromTo(stack[stackpos].cut, tag);
-
     stackpos--;
     instance_t *i;
     stringarray_t* index =dictionary_index(&instances);
@@ -970,6 +968,9 @@ static void s_endSprite()
        }
     }
 
+    if(stack[stackpos].cut)
+       tag = removeFromTo(stack[stackpos].cut, tag);
+
     // the writeInstance loop above may have inserted tags after what used yo be the current tag,
     // so let's make sure 'tag' point to the current tag again.
     while (tag->next)
@@ -2417,7 +2418,7 @@ int parseTwip(char*str)
     char*p = str;
     int val = 0;
     char ex = 0;
-    char*lastpos = str;
+    char*lastpos = 0;
     while(*p) {
        if(*p == '+' || *p == '-' || *p == '/' || *p == '*')
            ex = *p;
@@ -2439,6 +2440,7 @@ int parseTwip(char*str)
                v = parseRawTwip(lastpos);
            }
            *p = save;
+            printf("%f %c= %f\n", val/20.0, ex, v/20.0);
            if(ex == '+') 
                val += v;
            else if(ex == '-')
@@ -2453,6 +2455,7 @@ int parseTwip(char*str)
            lastpos = 0;
        }
     }
+    printf("%s -> %.2f\n", str, val/20.0);
     return val;
 }