From 5a01439038ecc070090f01fa824275eca215f2e9 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Mon, 30 Jun 2008 19:11:43 -0700 Subject: [PATCH] Fix integer>bit-array to work with zero as argument --- core/bit-arrays/bit-arrays-tests.factor | 2 ++ core/bit-arrays/bit-arrays.factor | 14 ++++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/core/bit-arrays/bit-arrays-tests.factor b/core/bit-arrays/bit-arrays-tests.factor index b41cf9c4a5..dfad9d951a 100755 --- a/core/bit-arrays/bit-arrays-tests.factor +++ b/core/bit-arrays/bit-arrays-tests.factor @@ -54,6 +54,7 @@ IN: bit-arrays.tests [ -10 ?{ } resize-bit-array ] must-fail [ -1 integer>bit-array ] must-fail +[ ?{ } ] [ 0 integer>bit-array ] unit-test [ ?{ f t } ] [ 2 integer>bit-array ] unit-test [ ?{ t t t t t t t t t } ] [ 511 integer>bit-array ] unit-test [ ?{ @@ -66,6 +67,7 @@ IN: bit-arrays.tests ] unit-test [ 14 ] [ ?{ f t t t } bit-array>integer ] unit-test +[ 0 ] [ ?{ } bit-array>integer ] unit-test [ HEX: ffffffffffffffffffffffffffffffff ] [ ?{ t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t diff --git a/core/bit-arrays/bit-arrays.factor b/core/bit-arrays/bit-arrays.factor index 4446bb5556..adbd91e66a 100755 --- a/core/bit-arrays/bit-arrays.factor +++ b/core/bit-arrays/bit-arrays.factor @@ -52,12 +52,14 @@ M: bit-array resize resize-bit-array ; : integer>bit-array ( int -- bit-array ) - [ log2 1+ 0 ] keep - [ dup zero? not ] [ - [ -8 shift ] [ 255 bitand ] bi - -roll [ [ set-alien-unsigned-1 ] 2keep 1+ ] dip - ] [ ] while - 2drop ; + dup zero? [ drop ?{ } ] [ + [ 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 ) dup >r length 7 + n>byte 0 r> [