X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Frfxswf.c;h=ad3ad217d5db1aabad06bc267f39b4bab0a7082f;hp=29a13ea0845d52ca84478d8cd74e4809dddd775f;hb=f3784f411338b99aa3b04c5e881c995227c8a053;hpb=d5d595db551150511bacf91e0037908020bcf394 diff --git a/lib/rfxswf.c b/lib/rfxswf.c index 29a13ea..ad3ad21 100644 --- a/lib/rfxswf.c +++ b/lib/rfxswf.c @@ -83,7 +83,16 @@ void swf_SetTagPos(TAG * t,U32 pos) char* swf_GetString(TAG*t) { char* str = ((char*)(&(t)->data[(t)->pos])); - while(swf_GetU8(t)); + while(t->pos < t->len && swf_GetU8(t)); + /* make sure we always have a trailing zero byte */ + if(t->pos == t->len) { + if(t->len == t->memsize) { + swf_ResetWriteBits(t); + swf_SetU8(t, 0); + t->len = t->pos; + } + t->data[t->len] = 0; + } return str; } @@ -1236,6 +1245,15 @@ int swf_WriteSWF2(writer_t*writer, SWF * swf) // Writes SWF to file, return if(writer) writer_lastpos = writer->pos; + if(swf->fileVersion >= 8) { + if ((swf->firstTag && swf->firstTag->id != ST_FILEATTRIBUTES) && + (!swf->firstTag->next || swf->firstTag->next->id != ST_FILEATTRIBUTES)) + { + U32 flags = 0; // | 128 = usenetwork, | 8 = hasmetadata + swf_SetU32(swf_InsertTagBefore(swf, swf->firstTag,ST_FILEATTRIBUTES),flags); + } + } + // Insert REFLEX Tag #ifdef INSERT_RFX_TAG