<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -537,11 +537,15 @@ rb_pointer_new(const char *type_str, void *val)
     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()-&gt;get_sizeof(type_str)));
+    rb_pointer_assign(p, 0, rval);
+    return p;
 }
 
 static VALUE
@@ -612,7 +616,7 @@ rb_pointer_aset(VALUE rcv, SEL sel, VALUE idx, VALUE val)
 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</diff>
      <filename>bridgesupport.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -26,7 +26,7 @@ typedef struct rb_vm_bs_boxed {
 } 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);</diff>
      <filename>bridgesupport.h</filename>
    </modified>
    <modified>
      <diff>@@ -4604,13 +4604,12 @@ rb_vm_rval_to_cptr(VALUE rval, const char *type, void **cptr)
     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;</diff>
      <filename>compiler.cpp</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>db4282316437f8b79f69f9692ad5d71ae0de0a98</id>
    </parent>
  </parents>
  <author>
    <name>lsansonetti@apple.com</name>
    <email>lsansonetti@apple.com@23306eb0-4c56-4727-a40e-e92c0eb68959</email>
  </author>
  <url>http://github.com/masterkain/macruby/commit/0f9653952ac2176ddbcb6b3b1bb2475b0645e9f0</url>
  <id>0f9653952ac2176ddbcb6b3b1bb2475b0645e9f0</id>
  <committed-date>2009-06-19T17:57:44-07:00</committed-date>
  <authored-date>2009-06-19T17:57:44-07:00</authored-date>
  <message>better version of last commit

git-svn-id: http://svn.macosforge.org/repository/ruby/MacRuby/branches/experimental@1895 23306eb0-4c56-4727-a40e-e92c0eb68959</message>
  <tree>713d939837c6af2e628b5d6a7a0f728674286d19</tree>
  <committer>
    <name>lsansonetti@apple.com</name>
    <email>lsansonetti@apple.com@23306eb0-4c56-4727-a40e-e92c0eb68959</email>
  </committer>
</commit>
