[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