[macruby-changes] [1548] MacRuby/branches/experimental

source_changes at macosforge.org source_changes at macosforge.org
Wed May 6 17:40:59 PDT 2009


Revision: 1548
          http://trac.macosforge.org/projects/ruby/changeset/1548
Author:   lsansonetti at apple.com
Date:     2009-05-06 17:40:58 -0700 (Wed, 06 May 2009)
Log Message:
-----------
disable the _cfindexOfObject:range: fix if > 10.5

Modified Paths:
--------------
    MacRuby/branches/experimental/array.c
    MacRuby/branches/experimental/objc.h

Modified: MacRuby/branches/experimental/array.c
===================================================================
--- MacRuby/branches/experimental/array.c	2009-05-07 00:40:29 UTC (rev 1547)
+++ MacRuby/branches/experimental/array.c	2009-05-07 00:40:58 UTC (rev 1548)
@@ -3487,6 +3487,7 @@
     RESTORE_RCV(rcv);
 }
 
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060
 static CFIndex
 imp_rb_array_cfindexOfObjectInRange(void *rcv, SEL sel, void *obj, 
     CFRange range)
@@ -3497,6 +3498,7 @@
     RESTORE_RCV(rcv);
     return i;
 }
+#endif
 
 void
 rb_objc_install_array_primitives(Class klass)
@@ -3511,6 +3513,7 @@
 	(IMP)imp_rb_array_replaceObjectsInRangeWithObjectsCount);
     rb_objc_install_method2(klass, "addObject:", (IMP)imp_rb_array_addObject);
 
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060
     /* This is to work around a bug where CF will try to call an non-existing 
      * method. 
      */
@@ -3520,7 +3523,8 @@
 	    sel_registerName("_cfindexOfObject:range:"));
     class_addMethod(klass, sel_registerName("_cfindexOfObject:inRange:"), 
 	    method_getImplementation(m), method_getTypeEncoding(m));
-    
+#endif
+
     rb_define_alloc_func((VALUE)klass, ary_alloc);
 }
 

Modified: MacRuby/branches/experimental/objc.h
===================================================================
--- MacRuby/branches/experimental/objc.h	2009-05-07 00:40:29 UTC (rev 1547)
+++ MacRuby/branches/experimental/objc.h	2009-05-07 00:40:58 UTC (rev 1548)
@@ -32,6 +32,10 @@
     Method method, method2;
 
     method = class_getInstanceMethod(klass, sel);
+    if (method == NULL) {
+	printf("method %s not found on class %p - aborting\n", sel_getName(sel), klass);
+	abort();
+    }
     assert(method != NULL);
  
     method2 = class_getInstanceMethod((Class)RCLASS_SUPER(klass), sel);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090506/993361bd/attachment.html>


More information about the macruby-changes mailing list