[macruby-changes] [3489] MacRuby/trunk/vm.cpp

source_changes at macosforge.org source_changes at macosforge.org
Wed Feb 10 19:16:13 PST 2010


Revision: 3489
          http://trac.macosforge.org/projects/ruby/changeset/3489
Author:   lsansonetti at apple.com
Date:     2010-02-10 19:16:10 -0800 (Wed, 10 Feb 2010)
Log Message:
-----------
fix a bug in macruby_main() that prevented arguments passing (thanks Hongli Lai)

Modified Paths:
--------------
    MacRuby/trunk/vm.cpp

Modified: MacRuby/trunk/vm.cpp
===================================================================
--- MacRuby/trunk/vm.cpp	2010-02-11 02:40:26 UTC (rev 3488)
+++ MacRuby/trunk/vm.cpp	2010-02-11 03:16:10 UTC (rev 3489)
@@ -4966,20 +4966,30 @@
     char *p1, *p2;
     int n, i;
 
+    /*
+     * Transform the original argv into something like this:
+     * argv[0] = original value
+     * argv[1] = -I/path-to-app-dir/(...)/Resources
+     * argv[2] = main .rb file
+     * argv[3 .. N] = rest of original argv
+     */
+
     newargv = (char **)malloc(sizeof(char *) * (argc + 2));
-    for (i = n = 0; i < argc; i++) {
-	if (!strncmp(argv[i], "-psn_", 5) == 0) {
+    newargv[0] = argv[0];
+    
+    p1 = (char *)malloc(PATH_MAX);
+    newargv[1] = (char *)resources_path(p1, PATH_MAX);
+    
+    p2 = (char *)malloc(PATH_MAX);
+    snprintf(p2, PATH_MAX, "%s/%s", (path[0] != '/') ? &p1[2] : "", path);
+    newargv[2] = p2;
+    
+    for (i = 1, n = 3; i < argc; i++) {
+	if (strncmp(argv[i], "-psn_", 5) != 0) {
 	    newargv[n++] = argv[i];
 	}
     }
     
-    p1 = (char *)malloc(PATH_MAX);
-    newargv[n++] = (char *)resources_path(p1, PATH_MAX);
-
-    p2 = (char *)malloc(PATH_MAX);
-    snprintf(p2, PATH_MAX, "%s/%s", (path[0] != '/') ? &p1[2] : "", path);
-    newargv[n++] = p2;
-
     argv = newargv;    
     argc = n;
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100210/60627411/attachment.html>


More information about the macruby-changes mailing list