X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fas3%2Fpool.c;h=4cd4352ec2de6051491c9ef7ca7a2965aab8d0d4;hp=edd048bd633633acb981f34a5477ec33ab2260b6;hb=86683e9e9c61cb3f0164a1ffcf151ccefa8871df;hpb=d016fb9a0dd752b541a45830ec55516ada425944 diff --git a/lib/as3/pool.c b/lib/as3/pool.c index edd048b..4cd4352 100644 --- a/lib/as3/pool.c +++ b/lib/as3/pool.c @@ -185,9 +185,9 @@ char* namespace_tostring(namespace_t*ns) char*s = escape_string(ns->name); char*string = (char*)malloc(strlen(access)+strlen(s)+7); if(!s) - sprintf(string, "[%s]NULL", access, s); + sprintf(string, "[%s]NULL", access); else if(!*s) - sprintf(string, "[%s]\"\"", access, s); + sprintf(string, "[%s]\"\"", access); else sprintf(string, "[%s]%s", access, s); free(s); @@ -953,7 +953,7 @@ int pool_find_float(pool_t*pool, double x) { int i = array_find(pool->x_ints, &x); if(i<=0) { - fprintf(stderr, "Couldn't find int \"%d\" in constant pool\n", x); + fprintf(stderr, "Couldn't find int \"%f\" in constant pool\n", x); return 0; } return i; @@ -965,7 +965,7 @@ int pool_find_namespace(pool_t*pool, namespace_t*ns) int i = array_find(pool->x_namespaces, ns); if(i<0) { char*s = namespace_tostring(ns); - fprintf(stderr, "Couldn't find namespace \"%s\" %08x in constant pool\n", s, ns); + fprintf(stderr, "Couldn't find namespace \"%s\" %08x in constant pool\n", s, (int)ns); free(s); return 0; } @@ -991,7 +991,7 @@ int pool_find_string(pool_t*pool, const char*str) string_t s = string_new2(str); int i = array_find(pool->x_strings, &s); if(i<=0) { - fprintf(stderr, "Couldn't find string \"%s\" in constant pool\n", s); + fprintf(stderr, "Couldn't find string \"%s\" in constant pool\n", str); return 0; } return i; @@ -1232,7 +1232,7 @@ void pool_dump(pool_t*pool, FILE*fo, char flags) int freq = (int)(ptroff_t)array_getvalue(pool->x_strings, t); if(flags&1) fprintf(fo, "%5d %d) ", freq, t); if(flags&1) fwrite(str.str, str.len, 1, fo); - if(flags&1) fprintf(fo, "\n", t); + if(flags&1) fprintf(fo, "\n"); } fprintf(fo, "%d namespaces\n", pool->x_namespaces->num); for(t=1;tx_namespaces->num;t++) { @@ -1359,13 +1359,17 @@ void pool_write(pool_t*pool, TAG*tag) } else { assert(m->type!=0x07 && m->type!=0x0d); } + if(m->name) { assert(m->type==0x09 || m->type==0x0e || m->type==0x07 || m->type==0x0d || m->type==0x0f || m->type==0x10); int i = pool_find_string(pool, m->name); if(i<0) fprintf(stderr, "internal error: unregistered name\n"); swf_SetU30(tag, i); } else { - assert(m->type!=0x09 && m->type!=0x0e && m->type!=0x07 && m->type!=0x0d && m->type!=0x0f && m->type!=0x10); + if(m->type == 0x09) { + swf_SetU30(tag, 0); + } + assert(m->type!=0x0e && m->type!=0x07 && m->type!=0x0d && m->type!=0x0f && m->type!=0x10); } if(m->namespace_set) { assert(m->type==0x09 || m->type==0x0e || m->type==0x1c || m->type==0x1b);