diff --git a/extra/bit-arrays/bit-arrays.factor b/extra/bit-arrays/bit-arrays.factor index 4fee1dfba3..96d7cf9905 100755 --- a/extra/bit-arrays/bit-arrays.factor +++ b/extra/bit-arrays/bit-arrays.factor @@ -73,12 +73,14 @@ M: bit-array byte-length length 7 + -3 shift ; \ } [ >bit-array ] parse-literal ; parsing : integer>bit-array ( int -- bit-array ) - [ log2 1+ 0 ] keep - [ dup zero? not ] [ - [ -8 shift ] [ 255 bitand ] bi - -roll [ [ >r underlying>> r> set-alien-unsigned-1 ] 2keep 1+ ] dip - ] [ ] while - 2drop ; + dup zero? [ drop 0 ] [ + [ log2 1+ 0 ] keep + [ dup zero? not ] [ + [ -8 shift ] [ 255 bitand ] bi + -roll [ [ set-alien-unsigned-1 ] 2keep 1+ ] dip + ] [ ] while + 2drop + ] if ; : bit-array>integer ( bit-array -- int ) 0 swap underlying>> [ length ] keep [