[macruby-changes] [186] MacRuby/trunk/string.c
source_changes at macosforge.org
source_changes at macosforge.org
Sat May 3 21:56:49 PDT 2008
Revision: 186
http://trac.macosforge.org/projects/ruby/changeset/186
Author: lsansonetti at apple.com
Date: 2008-05-03 21:56:49 -0700 (Sat, 03 May 2008)
Log Message:
-----------
make sure bytestrings are created
Modified Paths:
--------------
MacRuby/trunk/string.c
Modified: MacRuby/trunk/string.c
===================================================================
--- MacRuby/trunk/string.c 2008-05-03 01:15:13 UTC (rev 185)
+++ MacRuby/trunk/string.c 2008-05-04 04:56:49 UTC (rev 186)
@@ -583,39 +583,29 @@
static void
rb_objc_str_set_bytestring(VALUE str, const char *dataptr, long datalen)
{
- struct rb_objc_str_struct *s;
-
assert(dataptr != NULL);
assert(datalen > 0);
-#if 1
- CFStringRef substr = CFStringCreateWithBytes/*NoCopy*/(
+ CFStringRef substr = CFStringCreateWithBytes(
NULL,
(const UInt8 *)dataptr,
datalen,
kCFStringEncodingUTF8,
- false/*,
- kCFAllocatorNull*/);
- CFStringReplaceAll((CFMutableStringRef)str, substr);
- CFRelease(substr);
-#else
- s = rb_objc_str_get_struct2(str);
- if (s->cfdata == NULL) {
+ false);
+ if (substr != NULL) {
+ CFStringReplaceAll((CFMutableStringRef)str, substr);
+ CFRelease(substr);
+ }
+ else {
+ struct rb_objc_str_struct *s;
CFMutableDataRef data;
+
+ s = rb_objc_str_get_struct2(str);
data = CFDataCreateMutable(NULL, 0);
- rb_warning("string %p becomes a bytestring (len %ld clen %ld)",
- str, datalen, strlen(dataptr));
CFDataAppendBytes(data, (const UInt8 *)dataptr, datalen);
GC_WB(&s->cfdata, (void *)data);
CFMakeCollectable(data);
}
- else {
- CFDataReplaceBytes((CFMutableDataRef)s->cfdata,
- CFRangeMake(0, CFDataGetLength((CFDataRef)s->cfdata)),
- (const UInt8 *)dataptr, datalen);
- }
- rb_str_bytesync(str);
-#endif
}
#endif
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macruby-changes/attachments/20080503/c8935275/attachment.html
More information about the macruby-changes
mailing list