[macruby-changes] [4200] MacRuby/trunk/eval.c

source_changes at macosforge.org source_changes at macosforge.org
Thu Jun 3 17:13:52 PDT 2010


Revision: 4200
          http://trac.macosforge.org/projects/ruby/changeset/4200
Author:   martinlagardette at apple.com
Date:     2010-06-03 17:13:49 -0700 (Thu, 03 Jun 2010)
Log Message:
-----------
Do not run node if node is not executable. (Backport from 1.9)

 - Fixes #592

Modified Paths:
--------------
    MacRuby/trunk/eval.c

Modified: MacRuby/trunk/eval.c
===================================================================
--- MacRuby/trunk/eval.c	2010-06-03 20:20:19 UTC (rev 4199)
+++ MacRuby/trunk/eval.c	2010-06-04 00:13:49 UTC (rev 4200)
@@ -189,18 +189,39 @@
 void rb_require_libraries(void);
 
 int
-ruby_run_node(void *n)
+ruby_executable_node(void *n, int *status)
 {
-    rb_require_libraries();
-    if ((VALUE)n == Qtrue) {
-	return EXIT_SUCCESS;
+    VALUE v = (VALUE)n;
+    int s;
+
+    switch (v) {
+      case Qtrue:
+        s = EXIT_SUCCESS;
+	break;
+      case Qfalse:
+	s = EXIT_FAILURE;
+	break;
+      default:
+	if (!FIXNUM_P(v)) {
+	    return TRUE;
+	}
+	s = FIX2INT(v);
     }
-    else if ((VALUE)n == Qfalse) {
-	return EXIT_FAILURE;
+    if (status) {
+	*status = s;
     }
-    else if (FIXNUM_P(n)) {
-	return FIX2INT(n);
+    return FALSE;
+}
+
+int
+ruby_run_node(void *n)
+{
+    int status;
+    if (!ruby_executable_node(n, &status)) {
+	ruby_cleanup(0);
+	return status;
     }
+    rb_require_libraries();
     rb_vm_run(RSTRING_PTR(rb_progname), (NODE *)n, NULL, false);
     return ruby_cleanup(0);
 }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100603/d0aaf938/attachment.html>


More information about the macruby-changes mailing list