X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fas3%2Fabc.c;h=207c277ed7f8189433bf96b932a1df6906374ce5;hb=ab2f7a4cd0eda09ff3af29058c45d098f869b598;hp=30e561685ae3c10fc65570de6e656e30ed985d0e;hpb=d1bd05be7a0043782521ea5dc1e063f61ea36e2a;p=swftools.git diff --git a/lib/as3/abc.c b/lib/as3/abc.c index 30e5616..207c277 100644 --- a/lib/as3/abc.c +++ b/lib/as3/abc.c @@ -284,11 +284,11 @@ trait_t* abc_class_staticslot(abc_class_t*cls, multiname_t*name, multiname_t*typ } -trait_t* abc_class_find_slotid(abc_class_t*cls, int slotid) +trait_t* traits_find_slotid(trait_list_t*traits, int slotid) { trait_list_t*l; trait_t*t=0; - for(l=cls->traits;l;l=l->next) { + for(l=traits;l;l=l->next) { if(l->trait->slot_id==slotid) { t=l->trait; break; @@ -933,6 +933,8 @@ static pool_t*writeABC(TAG*abctag, void*code, pool_t*pool) abc_file_t*file = (abc_file_t*)code; if(!pool) pool = pool_new(); + if(!file) + file = abc_file_new(); TAG*tmp = swf_InsertTag(0,0); TAG*tag = tmp; @@ -947,6 +949,10 @@ static pool_t*writeABC(TAG*abctag, void*code, pool_t*pool) NEW(abc_method_body_t,body);array_append(file->method_bodies, NO_KEY, body); // don't bother to set m->index body->method = m; m->body = body; + if(c->superclass && c->superclass->name && !strcmp(c->superclass->name,"Object")) { + __ getlocal_0(body); + __ constructsuper(body, 0); + } __ returnvoid(body); c->constructor = m; } else {