ham@polya.Stanford.EDU (Peter R. Ham) (06/06/89)
I don't have a version number for this code, but the last date in the
ChangeLog is:
Thu Dec 29 01:48:03 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
The following code implicity assumes that xmalloc() returns zeroed memory:
main()
...
cmdline_references =
(struct glosym **) xmalloc (cl_refs_allocated
* sizeof(struct glosym *));
It's my understanding that "malloc()", which "xmalloc()" calls is not
guarranteed return a pointer to zero filled memory.
This dependecny can be fixed by clearing the memory with bzero inside xmalloc()
or appending:
bzero((char *) cmdline_references, cl_refs_allocated *
sizeof(struct glosym *));
After the call to xmalloc.
Later on, this assumption is used:
void
add_cmdline_ref (sp)
struct glosym *sp;
{
struct glosym **ptr;
for (ptr = cmdline_references;
ptr < cmdline_references + cl_refs_allocated && *ptr;(RIGHT HERE!!!)
ptr++)
;
if (ptr == cmdline_references + cl_refs_allocated)
{
int diff = ptr - cmdline_references;
cl_refs_allocated *= 2;
cmdline_references = (struct glosym **)
xrealloc (cmdline_references,
cl_refs_allocated * sizeof (struct glosym *));
ptr = cmdline_references + diff;
}
*ptr++ = sp;
*ptr = (struct glosym *) 0;
}
and there is similar code in "do_warnings()".
--
Peter Ham PO Box 3430 (415) 324-4782
MS Computer Science Student Stanford, CA ham@polya.stanford.edu
Stanford University 94309