[macruby-changes] [4466] MacRuby/trunk

source_changes at macosforge.org source_changes at macosforge.org
Wed Aug 25 15:21:54 PDT 2010


Revision: 4466
          http://trac.macosforge.org/projects/ruby/changeset/4466
Author:   lsansonetti at apple.com
Date:     2010-08-25 15:21:53 -0700 (Wed, 25 Aug 2010)
Log Message:
-----------
fixed a bug in the BridgeSupport parser when dealing with circular dependencies + minor bug fixes

Modified Paths:
--------------
    MacRuby/trunk/bridgesupport.cpp
    MacRuby/trunk/bs.c

Modified: MacRuby/trunk/bridgesupport.cpp
===================================================================
--- MacRuby/trunk/bridgesupport.cpp	2010-08-25 20:56:08 UTC (rev 4465)
+++ MacRuby/trunk/bridgesupport.cpp	2010-08-25 22:21:53 UTC (rev 4466)
@@ -1007,8 +1007,8 @@
 			(const void *)name, NULL)) {
 
 		VALUE val = strchr(bs_enum->value, '.') != NULL
-		    ? rb_float_new(rb_cstr_to_dbl(bs_enum->value, 1))
-		    : rb_cstr_to_inum(bs_enum->value, 10, 1);
+		    ? rb_float_new(rb_cstr_to_dbl(bs_enum->value, 0))
+		    : rb_cstr_to_inum(bs_enum->value, 10, 0);
 		CFDictionarySetValue(rb_cObject_dict, (const void *)name, 
 			(const void *)val);
 	    }

Modified: MacRuby/trunk/bs.c
===================================================================
--- MacRuby/trunk/bs.c	2010-08-25 20:56:08 UTC (rev 4465)
+++ MacRuby/trunk/bs.c	2010-08-25 22:21:53 UTC (rev 4466)
@@ -464,6 +464,8 @@
     }
   }
 
+  CFArrayAppendValue(parser->loaded_paths, cf_path);
+
   //printf("parsing %s\n", path);
 
 #define BAIL(fmt, args...)                      \
@@ -556,6 +558,8 @@
           
           depends_on_path = get_attribute(reader, "path");
           CHECK_ATTRIBUTE(depends_on_path, "path");
+
+//printf("depends of %s\n", depends_on_path);
           
           bs_path_found = bs_find_path(depends_on_path, bs_path, 
                                        sizeof bs_path);
@@ -734,7 +738,6 @@
           bs_element_cftype_t *bs_cftype;
           char *cftype_name;
           char *cftype_type;
-          char *cftype_gettypeid_func_name;
 
           cftype_name = get_attribute(reader, "name");
           CHECK_ATTRIBUTE(cftype_name, "name");
@@ -748,6 +751,11 @@
           bs_cftype->name = cftype_name;
           bs_cftype->type = cftype_type;
 
+#if 1
+          /* the type_id field isn't used in MacRuby */
+          bs_cftype->type_id = 0;
+#else
+          char *cftype_gettypeid_func_name;
           cftype_gettypeid_func_name = get_attribute(reader, "gettypeid_func");
           if (cftype_gettypeid_func_name != NULL) {
             void *sym;
@@ -765,6 +773,7 @@
           else {
             bs_cftype->type_id = 0;
           }
+#endif
 
           bs_cftype->tollfree = get_attribute(reader, "tollfree");
 
@@ -1249,8 +1258,16 @@
 
   xmlFreeTextReader(reader);
 
-  if (success) {
-    CFArrayAppendValue(parser->loaded_paths, cf_path);
+  if (!success) {
+      for (unsigned i = 0, count = CFArrayGetCount(parser->loaded_paths);
+	      i < count; i++) {
+	  CFStringRef s = CFArrayGetValueAtIndex(parser->loaded_paths, i);
+	  if (CFStringCompare(cf_path, s, kCFCompareCaseInsensitive)
+		  == kCFCompareEqualTo) {
+	      CFArrayRemoveValueAtIndex(parser->loaded_paths, i);
+	      break;
+	  }
+      }
   }
   CFRelease(cf_path);
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100825/2c443228/attachment-0001.html>


More information about the macruby-changes mailing list