Use the more standard files xalloc.h' and xmalloc.c' instead of

Bison's `allocate.c' and `alloc.h'.  This patch was surprisingly
difficult and introduced a lot of core dump.  It turns out that
Bison used an implementation of `xmalloc' based on `calloc', and
at various places it does depend upon the initialization to 0.  I
have not tried to isolate the pertinent places, and all the former
calls to Bison's `xmalloc' are now using `XCALLOC'.  Someday,
someone should address this issue.
* src/allocate.c, src/alloc.h, m4/bison-decl.m4: Remove.
* lib/xmalloc.c, lib/xalloc.h, m4/malloc.m4, m4/realloc.m4: New
files.
Adjust dependencies.
* src/warshall.h: New file.
Propagate.
This commit is contained in:
Akim Demaille
2000-10-02 08:48:32 +00:00
parent 340ef48922
commit d7913476c4
28 changed files with 593 additions and 438 deletions

View File

@@ -20,7 +20,7 @@ Boston, MA 02111-1307, USA. */
#include "system.h"
#include "alloc.h"
#include "xalloc.h"
#include "symtab.h"
#include "gram.h"
@@ -56,7 +56,7 @@ copys (const char *s)
for (cp = s; *cp; cp++)
i++;
result = xmalloc((unsigned int)i);
result = XMALLOC(char, i);
strcpy(result, s);
return result;
}
@@ -67,7 +67,7 @@ tabinit (void)
{
/* register int i; JF unused */
symtab = NEW2(TABSIZE, bucket *);
symtab = XCALLOC (bucket *, TABSIZE);
firstsymbol = NULL;
lastsymbol = NULL;
@@ -97,7 +97,7 @@ getsym (const char *key)
{
nsyms++;
bp = NEW(bucket);
bp = XCALLOC (bucket, 1);
bp->link = symtab[hashval];
bp->next = NULL;
bp->tag = copys(key);
@@ -135,11 +135,11 @@ free_symtab (void)
bptmp = bp->link;
#if 0 /* This causes crashes because one string can appear more than once. */
if (bp->type_name)
FREE(bp->type_name);
XFREE(bp->type_name);
#endif
FREE(bp);
XFREE(bp);
bp = bptmp;
}
}
FREE(symtab);
XFREE(symtab);
}