[macruby-changes] [1895] MacRuby/branches/experimental
source_changes at macosforge.org
source_changes at macosforge.org
Fri Jun 19 17:57:51 PDT 2009
Revision: 1895
http://trac.macosforge.org/projects/ruby/changeset/1895
Author: lsansonetti at apple.com
Date: 2009-06-19 17:57:44 -0700 (Fri, 19 Jun 2009)
Log Message:
-----------
better version of last commit
Modified Paths:
--------------
MacRuby/branches/experimental/bridgesupport.cpp
MacRuby/branches/experimental/bridgesupport.h
MacRuby/branches/experimental/compiler.cpp
Modified: MacRuby/branches/experimental/bridgesupport.cpp
===================================================================
--- MacRuby/branches/experimental/bridgesupport.cpp 2009-06-20 00:47:41 UTC (rev 1894)
+++ MacRuby/branches/experimental/bridgesupport.cpp 2009-06-20 00:57:44 UTC (rev 1895)
@@ -537,11 +537,15 @@
return Data_Wrap_Struct(rb_cPointer, NULL, NULL, ptr);
}
+static VALUE rb_pointer_assign(VALUE rcv, SEL sel, VALUE val);
+
VALUE
-rb_pointer_new2(const char *type_str)
+rb_pointer_new2(const char *type_str, VALUE rval)
{
- return rb_pointer_new(type_str,
+ VALUE p = rb_pointer_new(type_str,
xmalloc(GET_VM()->get_sizeof(type_str)));
+ rb_pointer_assign(p, 0, rval);
+ return p;
}
static VALUE
@@ -612,7 +616,7 @@
static VALUE
rb_pointer_assign(VALUE rcv, SEL sel, VALUE val)
{
- return rb_pointer_aset(rcv, 0, FIX2INT(0), val);
+ return rb_pointer_aset(rcv, 0, INT2FIX(0), val);
}
static VALUE
Modified: MacRuby/branches/experimental/bridgesupport.h
===================================================================
--- MacRuby/branches/experimental/bridgesupport.h 2009-06-20 00:47:41 UTC (rev 1894)
+++ MacRuby/branches/experimental/bridgesupport.h 2009-06-20 00:57:44 UTC (rev 1895)
@@ -26,7 +26,7 @@
} rb_vm_bs_boxed_t;
VALUE rb_pointer_new(const char *type_str, void *val);
-VALUE rb_pointer_new2(const char *type_str);
+VALUE rb_pointer_new2(const char *type_str, VALUE val);
void *rb_pointer_get_data(VALUE rcv, const char *type);
bool rb_boxed_is_type(VALUE klass, const char *type);
Modified: MacRuby/branches/experimental/compiler.cpp
===================================================================
--- MacRuby/branches/experimental/compiler.cpp 2009-06-20 00:47:41 UTC (rev 1894)
+++ MacRuby/branches/experimental/compiler.cpp 2009-06-20 00:57:44 UTC (rev 1895)
@@ -4604,13 +4604,12 @@
if (NIL_P(rval)) {
*cptr = NULL;
}
- else if (rb_boxed_is_type(CLASS_OF(rval), type + 1)) {
- // A convenience helper so that the user can pass a Boxed object
- // instead of a Pointer to the object.
- VALUE ptr = rb_pointer_new2(type + 1);
- *cptr = rb_pointer_get_data(ptr, type);
- }
else {
+ if (rb_boxed_is_type(CLASS_OF(rval), type + 1)) {
+ // A convenience helper so that the user can pass a Boxed object
+ // instead of a Pointer to the object.
+ rval = rb_pointer_new2(type + 1, rval);
+ }
*cptr = rb_pointer_get_data(rval, type);
}
return *cptr;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090619/edbb500d/attachment.html>
More information about the macruby-changes
mailing list