summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--mpz/iset_ui.c17
2 files changed, 12 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index bd4e582b8..58c2ecbb0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,8 @@
* mpn/x86_64/gcd_1.asm: Reduce latency.
* mpn/x86_64/mul_basecase.asm: Save one jump.
+ * mpz/iset_ui.c: Don't realloc.
+
2012-03-20 Marco Bodrato <bodrato@mail.dm.unipi.it>
* mp_clz_tab.c: Add __clz_tab[128].
diff --git a/mpz/iset_ui.c b/mpz/iset_ui.c
index 815b7379d..7eed1c165 100644
--- a/mpz/iset_ui.c
+++ b/mpz/iset_ui.c
@@ -27,20 +27,23 @@ mpz_init_set_ui (mpz_ptr dest, unsigned long int val)
{
mp_size_t size;
- ALLOC (dest) = 1;
- PTR (dest) = (mp_ptr) (*__gmp_allocate_func) (BYTES_PER_MP_LIMB);
-
- PTR (dest)[0] = val & GMP_NUMB_MASK;
- size = val != 0;
-
#if BITS_PER_ULONG > GMP_NUMB_BITS /* avoid warnings about shift amount */
if (val > GMP_NUMB_MAX)
{
- MPZ_REALLOC (dest, 2);
+ ALLOC (dest) = 2;
+ PTR (dest) = (mp_ptr) (*__gmp_allocate_func) (BYTES_PER_MP_LIMB*2);
PTR (dest)[1] = val >> GMP_NUMB_BITS;
size = 2;
}
+ else
#endif
+ {
+ ALLOC (dest) = 1;
+ PTR (dest) = (mp_ptr) (*__gmp_allocate_func) (BYTES_PER_MP_LIMB);
+
+ size = val != 0;
+ }
+ PTR (dest)[0] = val & GMP_NUMB_MASK;
SIZ (dest) = size;
}