[macruby-changes] [2122] MacRuby/branches/experimental/file.c

source_changes at macosforge.org source_changes at macosforge.org
Fri Jul 31 13:46:58 PDT 2009


Revision: 2122
          http://trac.macosforge.org/projects/ruby/changeset/2122
Author:   lsansonetti at apple.com
Date:     2009-07-31 13:46:57 -0700 (Fri, 31 Jul 2009)
Log Message:
-----------
fixed bytestring -> path conversion

Modified Paths:
--------------
    MacRuby/branches/experimental/file.c

Modified: MacRuby/branches/experimental/file.c
===================================================================
--- MacRuby/branches/experimental/file.c	2009-07-31 12:20:00 UTC (rev 2121)
+++ MacRuby/branches/experimental/file.c	2009-07-31 20:46:57 UTC (rev 2122)
@@ -115,11 +115,26 @@
 	tmp = obj;
     }
   exit:
-    StringValueCStr(tmp);
-    if (check && obj != tmp) {
-	rb_check_safe_obj(tmp);
+    if (CLASS_OF(tmp) == rb_cByteString) {
+	const long len = rb_bytestring_length(tmp);
+	char *buf = (char *)alloca(len + 1);
+	memcpy(buf, (const char *)rb_bytestring_byte_pointer(tmp), len); 
+	buf[len] = '\0';
+	CFStringRef str = CFStringCreateWithFileSystemRepresentation(NULL,
+		buf);
+	if (str == NULL) {
+	    rb_raise(rb_eRuntimeError,
+		    "can't convert given ByteString to path");
+	}
+	return (VALUE)CFMakeCollectable(str);
     }
-    return rb_str_new4(tmp);
+    else {
+	StringValueCStr(tmp);
+	if (check && obj != tmp) {
+	    rb_check_safe_obj(tmp);
+	}
+	return rb_str_new4(tmp);
+    }
 }
 
 VALUE
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090731/b07d04c8/attachment.html>


More information about the macruby-changes mailing list