Revision: 3489 http://trac.macosforge.org/projects/ruby/changeset/3489 Author: lsansonetti@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;
participants (1)
-
source_changes@macosforge.org