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;
{
SRECT r = currentrect;
- if(stack[stackpos].cut)
- tag = removeFromTo(stack[stackpos].cut, tag);
-
stackpos--;
instance_t *i;
stringarray_t* index =dictionary_index(&instances);
writeInstance(i);
}
}
+
+ 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)
tag = tag->next;
swf = stack[stackpos].swf;
filename = stack[stackpos].filename;
+ // 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)
+ tag = tag->next;
+
//if(tag->prev && tag->prev->id != ST_SHOWFRAME)
// tag = swf_InsertTag(tag, ST_SHOWFRAME);
tag = swf_InsertTag(tag, ST_SHOWFRAME);
swf_FontReduce_swfc(font);
tag = swf_InsertTag(tag, ST_DEFINEFONT2);
swf_FontSetDefine2(tag, font);
- tag = swf_InsertTag(tag, ST_EXPORTASSETS);
- swf_SetU16(tag, 1);
- swf_SetU16(tag, id);
- swf_SetString(tag, name);
+ if(do_exports) {
+ tag = swf_InsertTag(tag, ST_EXPORTASSETS);
+ swf_SetU16(tag, 1);
+ swf_SetU16(tag, id);
+ swf_SetString(tag, name);
+ }
incrementid();
}
else
swf_SetSoundDefine(tag, samples, numsamples);
- tag = swf_InsertTag(tag, ST_NAMECHARACTER);
- swf_SetU16(tag, id);
- swf_SetString(tag, name);
- tag = swf_InsertTag(tag, ST_EXPORTASSETS);
- swf_SetU16(tag, 1);
- swf_SetU16(tag, id);
- swf_SetString(tag, name);
+ if(do_exports) {
+ tag = swf_InsertTag(tag, ST_NAMECHARACTER);
+ swf_SetU16(tag, id);
+ swf_SetString(tag, name);
+ tag = swf_InsertTag(tag, ST_EXPORTASSETS);
+ swf_SetU16(tag, 1);
+ swf_SetU16(tag, id);
+ swf_SetString(tag, name);
+ }
sound = (sound_t*)malloc(sizeof(sound_t)); /* mem leak */
sound->tag = tag;
swf_SetTagPos(stack[stackpos].tag, 0);
swf_GetPlaceObject(stack[stackpos].tag, &p);
p.clipdepth = currentdepth;
- p.name = 0;
+ //p.name = 0;
swf_ClearTag(stack[stackpos].tag);
swf_SetPlaceObject(stack[stackpos].tag, &p);
currentdepth++;