[macruby-changes] [142] MacRuby/trunk/string.c

source_changes at macosforge.org source_changes at macosforge.org
Wed Apr 16 12:20:43 PDT 2008


Revision: 142
          http://trac.macosforge.org/projects/ruby/changeset/142
Author:   lsansonetti at apple.com
Date:     2008-04-16 12:20:43 -0700 (Wed, 16 Apr 2008)

Log Message:
-----------
fixing String#reverse

Modified Paths:
--------------
    MacRuby/trunk/string.c

Modified: MacRuby/trunk/string.c
===================================================================
--- MacRuby/trunk/string.c	2008-04-16 19:11:52 UTC (rev 141)
+++ MacRuby/trunk/string.c	2008-04-16 19:20:43 UTC (rev 142)
@@ -3954,15 +3954,12 @@
     if (n <= 1)
 	return rb_str_dup(str);
    
-    buffer = (UniChar *)CFStringGetCharactersPtr((CFStringRef)str);
-    if (buffer == NULL) {
-	buffer = (UniChar *)alloca(sizeof(UniChar) * n);
-    	CFStringGetCharacters((CFStringRef)buffer, CFRangeMake(0, n), buffer);
-    }
+    buffer = (UniChar *)alloca(sizeof(UniChar) * n);
+    CFStringGetCharacters((CFStringRef)str, CFRangeMake(0, n), buffer);
     for (i = 0; i < (n / 2); i++) {
 	UniChar c = buffer[i];
-	buffer[i] = buffer[n - i];
-	buffer[n - i] = c;
+	buffer[i] = buffer[n - i - 1];
+	buffer[n - i - 1] = c;
     }
     CFStringDelete((CFMutableStringRef)str, CFRangeMake(0, n));
     CFStringAppendCharacters((CFMutableStringRef)str, (const UniChar *)buffer, n);
@@ -4003,7 +4000,7 @@
 {
 #if WITH_OBJC
     VALUE obj = rb_str_dup(str);
-    rb_str_reverse_bang(rb_str_dup(str));
+    rb_str_reverse_bang(obj);
     return obj;
 #else
     rb_encoding *enc;

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macruby-changes/attachments/20080416/5d889d6a/attachment.html


More information about the macruby-changes mailing list