[macruby-changes] [2339] MacRuby/trunk/class.c

source_changes at macosforge.org source_changes at macosforge.org
Sun Aug 16 21:12:19 PDT 2009


Revision: 2339
          http://trac.macosforge.org/projects/ruby/changeset/2339
Author:   lsansonetti at apple.com
Date:     2009-08-16 21:12:19 -0700 (Sun, 16 Aug 2009)
Log Message:
-----------
don't forget to mark subclasses with the has-robject-alloc flag

Modified Paths:
--------------
    MacRuby/trunk/class.c

Modified: MacRuby/trunk/class.c
===================================================================
--- MacRuby/trunk/class.c	2009-08-16 19:37:16 UTC (rev 2338)
+++ MacRuby/trunk/class.c	2009-08-17 04:12:19 UTC (rev 2339)
@@ -166,12 +166,9 @@
     if (flags == T_MODULE) {
 	version_flag |= RCLASS_IS_MODULE;
     }
-    if (super == rb_cObject) {
+    if (super == rb_cObject || (RCLASS_VERSION(super) & RCLASS_IS_OBJECT_SUBCLASS) == RCLASS_IS_OBJECT_SUBCLASS) {
 	version_flag |= RCLASS_IS_OBJECT_SUBCLASS;
     }
-    else if ((RCLASS_VERSION(super) & RCLASS_IS_OBJECT_SUBCLASS) == RCLASS_IS_OBJECT_SUBCLASS) {
-	version_flag |= RCLASS_IS_OBJECT_SUBCLASS;
-    }
 
     RCLASS_SET_VERSION(ocklass, version_flag);
 
@@ -206,6 +203,12 @@
     if (super == rb_cNSObject) {
 	rb_define_object_special_methods(klass);
     }
+    else if (super != 0
+	    && ((RCLASS_VERSION(*(VALUE *)super) & RCLASS_HAS_ROBJECT_ALLOC)
+		== RCLASS_HAS_ROBJECT_ALLOC)) {
+	RCLASS_SET_VERSION(*(VALUE *)klass,
+		(RCLASS_VERSION(*(VALUE *)klass) | RCLASS_HAS_ROBJECT_ALLOC));
+    }
 
     if (name != NULL && rb_class_tbl != NULL) {
 	st_insert(rb_class_tbl, (st_data_t)rb_intern(name), (st_data_t)klass);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090816/57a5ba7e/attachment.html>


More information about the macruby-changes mailing list