summaryrefslogtreecommitdiff
path: root/gas/atof-generic.c
diff options
context:
space:
mode:
Diffstat (limited to 'gas/atof-generic.c')
-rw-r--r--gas/atof-generic.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/gas/atof-generic.c b/gas/atof-generic.c
index 2041810bc0..b1deec0ad2 100644
--- a/gas/atof-generic.c
+++ b/gas/atof-generic.c
@@ -305,6 +305,8 @@ atof_generic (/* return pointer to just AFTER number we read. */
{
int count; /* Number of useful digits left to scan. */
+ LITTLENUM_TYPE *temporary_binary_low = NULL;
+ LITTLENUM_TYPE *power_binary_low = NULL;
LITTLENUM_TYPE *digits_binary_low;
unsigned int precision;
unsigned int maximum_useful_digits;
@@ -362,7 +364,7 @@ atof_generic (/* return pointer to just AFTER number we read. */
* sizeof (LITTLENUM_TYPE);
digits_binary_low = (LITTLENUM_TYPE *)
- alloca (size_of_digits_in_chars);
+ xmalloc (size_of_digits_in_chars);
memset ((char *) digits_binary_low, '\0', size_of_digits_in_chars);
@@ -455,13 +457,11 @@ atof_generic (/* return pointer to just AFTER number we read. */
* giving return_binary_mantissa and return_binary_exponent.
*/
- LITTLENUM_TYPE *power_binary_low;
int decimal_exponent_is_negative;
/* This refers to the "-56" in "12.34E-56". */
/* FALSE: decimal_exponent is positive (or 0) */
/* TRUE: decimal_exponent is negative */
FLONUM_TYPE temporary_flonum;
- LITTLENUM_TYPE *temporary_binary_low;
unsigned int size_of_power_in_littlenums;
unsigned int size_of_power_in_chars;
@@ -479,8 +479,9 @@ atof_generic (/* return pointer to just AFTER number we read. */
size_of_power_in_chars = size_of_power_in_littlenums
* sizeof (LITTLENUM_TYPE) + 2;
- power_binary_low = (LITTLENUM_TYPE *) alloca (size_of_power_in_chars);
- temporary_binary_low = (LITTLENUM_TYPE *) alloca (size_of_power_in_chars);
+ power_binary_low = (LITTLENUM_TYPE *) xmalloc (size_of_power_in_chars);
+ temporary_binary_low = (LITTLENUM_TYPE *) xmalloc (size_of_power_in_chars);
+
memset ((char *) power_binary_low, '\0', size_of_power_in_chars);
*power_binary_low = 1;
power_of_10_flonum.exponent = 0;
@@ -571,7 +572,6 @@ atof_generic (/* return pointer to just AFTER number we read. */
(void) putchar ('\n');
#endif
}
-
}
/*
@@ -585,6 +585,11 @@ atof_generic (/* return pointer to just AFTER number we read. */
/* Assert sign of the number we made is '+'. */
address_of_generic_floating_point_number->sign = digits_sign_char;
+ if (temporary_binary_low)
+ free (temporary_binary_low);
+ if (power_binary_low)
+ free (power_binary_low);
+ free (digits_binary_low);
}
return return_value;
}