=================================================================== RCS file: /home/cvs/OpenXM_contrib/gmp/mpbsd/Attic/mout.c,v retrieving revision 1.1.1.2 retrieving revision 1.1.1.3 diff -u -p -r1.1.1.2 -r1.1.1.3 --- OpenXM_contrib/gmp/mpbsd/Attic/mout.c 2000/09/09 14:13:17 1.1.1.2 +++ OpenXM_contrib/gmp/mpbsd/Attic/mout.c 2003/08/25 16:06:37 1.1.1.3 @@ -1,6 +1,6 @@ /* mout(MINT) -- Do decimal output of MINT to standard output. -Copyright (C) 1991, 1994, 1996, 2000 Free Software Foundation, Inc. +Copyright 1991, 1994, 1996, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU MP Library. @@ -24,26 +24,24 @@ MA 02111-1307, USA. */ #include "mp.h" #include "gmp.h" #include "gmp-impl.h" +#include "longlong.h" void -#if __STDC__ mout (const MINT *x) -#else -mout (x) - const MINT *x; -#endif { mp_ptr xp; - mp_size_t x_size = x->_mp_size; + mp_srcptr x_ptr; + mp_size_t x_size; unsigned char *str; size_t str_size; - char *num_to_text; int i; TMP_DECL (marker); + x_size = x->_mp_size; if (x_size == 0) { fputc ('0', stdout); + fputc ('\n', stdout); return; } if (x_size < 0) @@ -53,23 +51,21 @@ mout (x) } TMP_MARK (marker); - str_size = ((size_t) (x_size * BITS_PER_MP_LIMB - * __mp_bases[10].chars_per_bit_exactly)) + 3; + x_ptr = x->_mp_d; + MPN_SIZEINBASE (str_size, x_ptr, x_size, 10); + str_size += 2; str = (unsigned char *) TMP_ALLOC (str_size); - /* Move the number to convert into temporary space, since mpn_get_str - clobbers its argument + needs one extra high limb.... */ - xp = (mp_ptr) TMP_ALLOC ((x_size + 1) * BYTES_PER_MP_LIMB); - MPN_COPY (xp, x->_mp_d, x_size); + /* mpn_get_str clobbers its argument */ + xp = TMP_ALLOC_LIMBS (x_size); + MPN_COPY (xp, x_ptr, x_size); str_size = mpn_get_str (str, 10, xp, x_size); - /* mpn_get_str might make some leading zeros. Skip them. */ - while (*str == 0) - { - str_size--; - str++; - } + /* mpn_get_str might make a leading zero, skip it. */ + str_size -= (*str == 0); + str += (*str == 0); + ASSERT (*str != 0); /* Translate to printable chars. */ for (i = 0; i < str_size; i++)