Add comments to explain checks and aborts, to assist future debugging.
This commit is contained in:
parent
baae5c2d84
commit
747d9d142f
1 changed files with 8 additions and 3 deletions
11
src/ralloc.c
11
src/ralloc.c
|
@ -402,6 +402,11 @@ find_bloc (ptr)
|
||||||
|
|
||||||
while (p != NIL_BLOC)
|
while (p != NIL_BLOC)
|
||||||
{
|
{
|
||||||
|
/* Consistency check. Don't return inconsistent blocs.
|
||||||
|
Don't abort here, as callers might be expecting this, but
|
||||||
|
callers that always expect a bloc to be returned should abort
|
||||||
|
if one isn't to avoid a memory corruption bug that is
|
||||||
|
difficult to track down. */
|
||||||
if (p->variable == ptr && p->data == *ptr)
|
if (p->variable == ptr && p->data == *ptr)
|
||||||
return p;
|
return p;
|
||||||
|
|
||||||
|
@ -981,7 +986,7 @@ r_alloc_free (ptr)
|
||||||
|
|
||||||
dead_bloc = find_bloc (ptr);
|
dead_bloc = find_bloc (ptr);
|
||||||
if (dead_bloc == NIL_BLOC)
|
if (dead_bloc == NIL_BLOC)
|
||||||
abort ();
|
abort (); /* Double free? PTR not originally used to allocate? */
|
||||||
|
|
||||||
free_bloc (dead_bloc);
|
free_bloc (dead_bloc);
|
||||||
*ptr = 0;
|
*ptr = 0;
|
||||||
|
@ -1025,7 +1030,7 @@ r_re_alloc (ptr, size)
|
||||||
|
|
||||||
bloc = find_bloc (ptr);
|
bloc = find_bloc (ptr);
|
||||||
if (bloc == NIL_BLOC)
|
if (bloc == NIL_BLOC)
|
||||||
abort ();
|
abort (); /* Already freed? PTR not originally used to allocate? */
|
||||||
|
|
||||||
if (size < bloc->size)
|
if (size < bloc->size)
|
||||||
{
|
{
|
||||||
|
@ -1246,7 +1251,7 @@ r_alloc_reset_variable (old, new)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bloc == NIL_BLOC || bloc->variable != old)
|
if (bloc == NIL_BLOC || bloc->variable != old)
|
||||||
abort ();
|
abort (); /* Already freed? OLD not originally used to allocate? */
|
||||||
|
|
||||||
/* Update variable to point to the new location. */
|
/* Update variable to point to the new location. */
|
||||||
bloc->variable = new;
|
bloc->variable = new;
|
||||||
|
|
Loading…
Add table
Reference in a new issue