[macruby-changes] [826] MacRuby/trunk/objc.m
source_changes at macosforge.org
source_changes at macosforge.org
Sun Mar 1 14:40:36 PST 2009
Revision: 826
http://trac.macosforge.org/projects/ruby/changeset/826
Author: lsansonetti at apple.com
Date: 2009-03-01 14:40:35 -0800 (Sun, 01 Mar 2009)
Log Message:
-----------
fix for #180
Modified Paths:
--------------
MacRuby/trunk/objc.m
Modified: MacRuby/trunk/objc.m
===================================================================
--- MacRuby/trunk/objc.m 2009-03-01 03:28:57 UTC (rev 825)
+++ MacRuby/trunk/objc.m 2009-03-01 22:40:35 UTC (rev 826)
@@ -3624,9 +3624,11 @@
}
static VALUE
-evaluateString_safe(VALUE expression)
+evaluateString_safe(VALUE context)
{
- return rb_eval_string([(NSString *)expression UTF8String]);
+ VALUE *argv = (VALUE *)context;
+ const int argc = NIL_P(argv[2]) ? 2 : 3;
+ return rb_f_eval(argc, argv, rb_vm_top_self());
}
static VALUE
@@ -3636,19 +3638,31 @@
return Qnil; /* not reached */
}
-- (id)evaluateString:(NSString *)expression
+static id
+__evaluate_string_at_path(VALUE string, VALUE path)
{
VALUE ret;
+ VALUE args[3];
- ret = rb_rescue2(evaluateString_safe, (VALUE)expression,
+ args[0] = string;
+ args[1] = Qnil;
+ args[2] = path;
+
+ ret = rb_rescue2(evaluateString_safe, (VALUE)args,
evaluateString_rescue, Qnil,
rb_eException, (VALUE)0);
return RB2OC(ret);
}
+- (id)evaluateString:(NSString *)expression
+{
+ return __evaluate_string_at_path((VALUE)expression, Qnil);
+}
+
- (id)evaluateFileAtPath:(NSString *)path
{
- return [self evaluateString:[NSString stringWithContentsOfFile:path usedEncoding:nil error:nil]];
+ VALUE expression = (VALUE)[NSString stringWithContentsOfFile:path usedEncoding:nil error:nil];
+ return __evaluate_string_at_path(expression, (VALUE)path);
}
- (id)evaluateFileAtURL:(NSURL *)URL
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090301/0a0b3d4e/attachment.html>
More information about the macruby-changes
mailing list