zero class_signature when allocing
[swftools.git] / lib / as3 / registry.c
index 637f67e..1e2482b 100644 (file)
@@ -32,6 +32,8 @@ static dict_t*classes=0;
 
 char class_signature_equals(class_signature_t*c1, class_signature_t*c2)
 {
+    if(!!c1 != !!c2)
+        return 0;
     /* notice: access right is *not* respected */
     if(!strcmp(c1->name, c2->name) &&
        !strcmp(c1->package, c2->package)) {
@@ -80,7 +82,7 @@ type_t function_signature_type = {
 
 class_signature_t* class_signature_register(int access, char*package, char*name)
 {
-    class_signature_t*c = malloc(sizeof(class_signature_t));
+    NEW(class_signature_t,c);
     c->access = access;
     c->package = package;
     c->name = name;
@@ -97,8 +99,6 @@ void registry_init()
 class_signature_t* registry_safefindclass(const char*package, const char*name)
 {
     class_signature_t*c = registry_findclass(package, name);
-    if(!c)
-        printf("%s.%s\n", package, name);
     assert(c);
     return c;
 }
@@ -109,6 +109,8 @@ class_signature_t* registry_findclass(const char*package, const char*name)
     tmp.package = package;
     tmp.name = name;
     class_signature_t* c = (class_signature_t*)dict_lookup(classes, &tmp);
+    /*if(c)
+        printf("%s.%s->%08x (%s.%s)\n", package, name, c, c->package, c->name);*/
     return c;
 }
 void registry_fill_multiname(multiname_t*m, namespace_t*n, class_signature_t*c)
@@ -142,7 +144,7 @@ class_signature_t* registry_getMovieClip() {return registry_safefindclass("flash
 
 // ----------------------- builtin dummy types -------------------------
 class_signature_t nullclass = {
-    ACCESS_PACKAGE, "", "null", 0, 0, 0,
+    ACCESS_PACKAGE, 0, "", "null", 0, 0, 0,
 };
 class_signature_t* registry_getnullclass() {
     return &nullclass;