diff --git a/core/strings/strings-tests.factor b/core/strings/strings-tests.factor index 247bd8d007..bebdb32820 100644 --- a/core/strings/strings-tests.factor +++ b/core/strings/strings-tests.factor @@ -121,3 +121,5 @@ unit-test [ <string> clone resize-string first ] keep = ] all-integers? ] unit-test + +[ HEX: 7fffff ] [ { -1 } >string first ] unit-test diff --git a/core/strings/strings.factor b/core/strings/strings.factor index f356d2a877..e57edf282a 100644 --- a/core/strings/strings.factor +++ b/core/strings/strings.factor @@ -19,7 +19,8 @@ IN: strings : (aux) ( n string -- byte-array m ) aux>> { byte-array } declare swap 1 fixnum-shift-fast ; inline -: small-char? ( ch -- ? ) HEX: 7f fixnum<= ; inline +: small-char? ( ch -- ? ) + dup 0 fixnum>= [ HEX: 7f fixnum<= ] [ drop f ] if ; inline : string-nth ( n string -- ch ) 2dup string-nth-fast dup small-char?