[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