mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 18:14:13 +08:00
* valarith.c (value_concat): Replace unsafe ALLOCA with
XMALLOC/XFREE.
This commit is contained in:
parent
f4045bcb61
commit
84c47588d0
@ -1,3 +1,8 @@
|
||||
2012-09-14 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
* valarith.c (value_concat): Replace unsafe ALLOCA with
|
||||
XMALLOC/XFREE.
|
||||
|
||||
2012-09-14 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* gdb.1 (SEE ALSO): Expand pointer to GDB's Texinfo manual.
|
||||
|
@ -668,9 +668,12 @@ value_concat (struct value *arg1, struct value *arg2)
|
||||
if (TYPE_CODE (type2) == TYPE_CODE_STRING
|
||||
|| TYPE_CODE (type2) == TYPE_CODE_CHAR)
|
||||
{
|
||||
struct cleanup *back_to;
|
||||
|
||||
count = longest_to_int (value_as_long (inval1));
|
||||
inval2len = TYPE_LENGTH (type2);
|
||||
ptr = (char *) alloca (count * inval2len);
|
||||
ptr = (char *) xmalloc (count * inval2len);
|
||||
back_to = make_cleanup (xfree, ptr);
|
||||
if (TYPE_CODE (type2) == TYPE_CODE_CHAR)
|
||||
{
|
||||
char_type = type2;
|
||||
@ -693,6 +696,7 @@ value_concat (struct value *arg1, struct value *arg2)
|
||||
}
|
||||
}
|
||||
outval = value_string (ptr, count * inval2len, char_type);
|
||||
do_cleanups (back_to);
|
||||
}
|
||||
else if (TYPE_CODE (type2) == TYPE_CODE_BOOL)
|
||||
{
|
||||
@ -706,6 +710,8 @@ value_concat (struct value *arg1, struct value *arg2)
|
||||
else if (TYPE_CODE (type1) == TYPE_CODE_STRING
|
||||
|| TYPE_CODE (type1) == TYPE_CODE_CHAR)
|
||||
{
|
||||
struct cleanup *back_to;
|
||||
|
||||
/* We have two character strings to concatenate. */
|
||||
if (TYPE_CODE (type2) != TYPE_CODE_STRING
|
||||
&& TYPE_CODE (type2) != TYPE_CODE_CHAR)
|
||||
@ -714,7 +720,8 @@ value_concat (struct value *arg1, struct value *arg2)
|
||||
}
|
||||
inval1len = TYPE_LENGTH (type1);
|
||||
inval2len = TYPE_LENGTH (type2);
|
||||
ptr = (char *) alloca (inval1len + inval2len);
|
||||
ptr = (char *) xmalloc (inval1len + inval2len);
|
||||
back_to = make_cleanup (xfree, ptr);
|
||||
if (TYPE_CODE (type1) == TYPE_CODE_CHAR)
|
||||
{
|
||||
char_type = type1;
|
||||
@ -737,6 +744,7 @@ value_concat (struct value *arg1, struct value *arg2)
|
||||
memcpy (ptr + inval1len, value_contents (inval2), inval2len);
|
||||
}
|
||||
outval = value_string (ptr, inval1len + inval2len, char_type);
|
||||
do_cleanups (back_to);
|
||||
}
|
||||
else if (TYPE_CODE (type1) == TYPE_CODE_BOOL)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user