fix bug in mp_radix_size() zero values returned a length of 1, not 2 in case of radix 2 re-ordering the special casing takes care of it
diff --git a/bn_mp_radix_size.c b/bn_mp_radix_size.c
index 9aab94a..1cbfba3 100644
--- a/bn_mp_radix_size.c
+++ b/bn_mp_radix_size.c
@@ -24,12 +24,6 @@ int mp_radix_size (mp_int * a, int radix, int *size)
*size = 0;
- /* special case for binary */
- if (radix == 2) {
- *size = mp_count_bits (a) + (a->sign == MP_NEG ? 1 : 0) + 1;
- return MP_OKAY;
- }
-
/* make sure the radix is in range */
if (radix < 2 || radix > 64) {
return MP_VAL;
@@ -40,6 +34,12 @@ int mp_radix_size (mp_int * a, int radix, int *size)
return MP_OKAY;
}
+ /* special case for binary */
+ if (radix == 2) {
+ *size = mp_count_bits (a) + (a->sign == MP_NEG ? 1 : 0) + 1;
+ return MP_OKAY;
+ }
+
/* digs is the digit count */
digs = 0;