Re: [MacRuby] #663: Kernel#sprintf formatting broken on trunk
#663: Kernel#sprintf formatting broken on trunk -------------------------------------+-------------------------------------- Reporter: jordan.breeding@… | Owner: lsansonetti@… Type: defect | Status: new Priority: blocker | Milestone: MacRuby 0.6 Component: MacRuby | Keywords: -------------------------------------+-------------------------------------- Comment(by watson1978@…): I rewrote a patch. {{{ #!diff diff --git a/string.c b/string.c index 969cc4b..c28c0fb 100644 --- a/string.c +++ b/string.c @@ -6495,7 +6495,13 @@ rb_uchar_strtol(UniChar *chars, long chars_len, long pos, long *end_offset) unum_close(nf); if (end_offset != NULL) { - *end_offset = (long)parse_pos; + long offset = (long)pos; + do { + if(!isdigit(chars[offset])) { + break; + } + } while(++offset < parse_pos); + *end_offset = offset; } return val; } }}} Test Code: {{{ #!ruby p sprintf("%06.4d", 2) p sprintf("%06.0d", 2) p sprintf("%06.04d", 2) p sprintf("%+06.04d", 2) p sprintf("%-06.04d", 2) p sprintf("%25.12d", 2) begin p sprintf("%06.-4d", 2) rescue => e p e end begin p sprintf("%06.+4d", 2) rescue => e p e end }}} Result {{{ $ ruby test.rb " 0002" " 2" " 0002" " +0002" "0002 " " 000000000002" #<ArgumentError: flag after width> #<ArgumentError: flag after width> $ DYLD_LIBRARY_PATH=. ./macruby -I./lib test.rb " 0002" " 2" " 0002" " +0002" "0002 " " 000000000002" #<ArgumentError: invalid precision> #<ArgumentError: invalid precision> }}} -- Ticket URL: <http://www.macruby.org/trac/ticket/663#comment:4> MacRuby <http://macruby.org/>
participants (1)
-
MacRuby