X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fas3%2Fabc.c;fp=lib%2Fas3%2Fabc.c;h=c8e9636486b869ac5161896fc29a426c017ed0f2;hb=876cadced9adaae335e18d8d0bb5288eec53570a;hp=e07a0668b3a0d4b15a9eab705228bdb80d4da4f4;hpb=311194a11b7ff5c82fee894f35ef43b820bddb39;p=swftools.git diff --git a/lib/as3/abc.c b/lib/as3/abc.c index e07a066..c8e9636 100644 --- a/lib/as3/abc.c +++ b/lib/as3/abc.c @@ -720,7 +720,8 @@ void* swf_ReadABC(TAG*tag) } pool_read(pool, tag); - //pool_dump(pool, stdout); + pool_dump(pool, stdout, 2); + printf("pool is %d bytes\n", tag->pos); int num_methods = swf_GetU30(tag); DEBUG printf("%d methods\n", num_methods); @@ -737,7 +738,7 @@ void* swf_ReadABC(TAG*tag) for(s=0;sparameters, param); } @@ -926,10 +927,11 @@ void* swf_ReadABC(TAG*tag) return file; } -void swf_WriteABC(TAG*abctag, void*code) +static pool_t*writeABC(TAG*abctag, void*code, pool_t*pool) { abc_file_t*file = (abc_file_t*)code; - pool_t*pool = pool_new(); + if(!pool) + pool = pool_new(); TAG*tmp = swf_InsertTag(0,0); TAG*tag = tmp; @@ -1188,6 +1190,14 @@ void swf_WriteABC(TAG*abctag, void*code) swf_SetBlock(tag, tmp->data, tmp->len); swf_DeleteTag(0, tmp); + return pool; +} + +void swf_WriteABC(TAG*abctag, void*code) +{ + pool_t*pool = writeABC(abctag, code, 0); + pool_optimize(pool); + writeABC(abctag, code, pool); pool_destroy(pool); }