[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