git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added more test cases
[swftools.git]
/
lib
/
as3
/
abc.c
diff --git
a/lib/as3/abc.c
b/lib/as3/abc.c
index
4375300
..
2962331
100644
(file)
--- a/
lib/as3/abc.c
+++ b/
lib/as3/abc.c
@@
-157,10
+157,9
@@
void abc_class_add_interface(abc_class_t*c, multiname_t*interface)
list_append(c->interfaces, multiname_clone(interface));
}
list_append(c->interfaces, multiname_clone(interface));
}
-abc_method_t* abc_method_new(abc_file_t*file, multiname_t*returntype, char body)
+void abc_method_init(abc_method_t*m, abc_file_t*file, multiname_t*returntype, char body)
{
/* construct method object */
{
/* construct method object */
- NEW(abc_method_t,m);
m->index = array_length(file->methods);
array_append(file->methods, NO_KEY, m);
m->return_type = returntype;
m->index = array_length(file->methods);
array_append(file->methods, NO_KEY, m);
m->return_type = returntype;
@@
-178,7
+177,11
@@
abc_method_t* abc_method_new(abc_file_t*file, multiname_t*returntype, char body)
m->body = c;
c->method = m;
}
m->body = c;
c->method = m;
}
-
+}
+abc_method_t* abc_method_new(abc_file_t*file, multiname_t*returntype, char body)
+{
+ NEW(abc_method_t,m);
+ abc_method_init(m, file, returntype, body);
return m;
}
return m;
}
@@
-281,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;
{
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;
if(l->trait->slot_id==slotid) {
t=l->trait;
break;
@@
-930,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();
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;
TAG*tmp = swf_InsertTag(0,0);
TAG*tag = tmp;