Revision: 146 http://trac.macosforge.org/projects/ruby/changeset/146 Author: lsansonetti@apple.com Date: 2008-04-17 01:08:28 -0700 (Thu, 17 Apr 2008) Log Message: ----------- fixing #ljust, #rjust, #rindex, #[] (with fixnum arg) Modified Paths: -------------- MacRuby/trunk/string.c Modified: MacRuby/trunk/string.c =================================================================== --- MacRuby/trunk/string.c 2008-04-17 07:18:14 UTC (rev 145) +++ MacRuby/trunk/string.c 2008-04-17 08:08:28 UTC (rev 146) @@ -1446,6 +1446,11 @@ rb_str_subseq(VALUE str, long beg, long len) { #if WITH_OBJC + long n = CFStringGetLength((CFStringRef)str); + if (beg < 0) + beg += n; + if (beg + len > n || beg < 0) + return Qnil; return (VALUE)CFStringCreateWithSubstring(NULL, (CFStringRef)str, CFRangeMake(beg, len)); #else @@ -2533,7 +2538,7 @@ CFRange r; return (CFStringFindWithOptions((CFStringRef)str, (CFStringRef)sub, - CFRangeMake(0, pos), + CFRangeMake(0, pos+1), kCFCompareBackwards, &r)) ? r.location : -1; @@ -3057,7 +3062,7 @@ num_index: str = rb_str_substr(str, idx, 1); - if (!NIL_P(str) && RSTRING_LEN(str) == 0) return Qnil; + if (!NIL_P(str) && RSTRING_CLEN(str) == 0) return Qnil; return str; case T_REGEXP: @@ -6802,10 +6807,10 @@ rb_str_justify0(str, pad, floor(width / 2.0), padwidth, 0); } else if (jflag == 'l') { - rb_str_justify0(str, pad, width, padwidth, 0); + rb_str_justify0(str, pad, width, padwidth, n); } else if (jflag == 'r') { - rb_str_justify0(str, pad, width, padwidth, n); + rb_str_justify0(str, pad, width, padwidth, 0); } else { rb_bug("invalid jflag");