mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-04-06 14:21:43 +08:00
Avoid memory leak in chew
An earlier patch of mine introduced a memory leak in chew. The bug was that the new "variable" word didn't free the following word. This patch fixes it by arranging to transfer ownership of the name to the variable itself. * doc/chew.c (add_variable): New function, from add_intrinsic_variable. (add_intrinsic_variable): Call add_variable. (compile): Call add_variable.
This commit is contained in:
parent
cd414f90c3
commit
85fc580128
@ -1241,9 +1241,9 @@ add_intrinsic (char *name, void (*func) (void))
|
||||
}
|
||||
|
||||
static void
|
||||
add_intrinsic_variable (char *name, intptr_t *loc)
|
||||
add_variable (char *name, intptr_t *loc)
|
||||
{
|
||||
dict_type *new_d = newentry (xstrdup (name));
|
||||
dict_type *new_d = newentry (name);
|
||||
pcu p = { push_variable };
|
||||
add_to_definition (new_d, p);
|
||||
p.l = (intptr_t) loc;
|
||||
@ -1252,6 +1252,12 @@ add_intrinsic_variable (char *name, intptr_t *loc)
|
||||
add_to_definition (new_d, p);
|
||||
}
|
||||
|
||||
static void
|
||||
add_intrinsic_variable (const char *name, intptr_t *loc)
|
||||
{
|
||||
add_variable (xstrdup (name), loc);
|
||||
}
|
||||
|
||||
void
|
||||
compile (char *string)
|
||||
{
|
||||
@ -1333,7 +1339,7 @@ compile (char *string)
|
||||
continue;
|
||||
intptr_t *loc = xmalloc (sizeof (intptr_t));
|
||||
*loc = 0;
|
||||
add_intrinsic_variable (word, loc);
|
||||
add_variable (word, loc);
|
||||
string = nextword (string, &word);
|
||||
}
|
||||
else
|
||||
|
Loading…
x
Reference in New Issue
Block a user