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

@@ -19,10 +19,11 @@
02111-1307, USA. */
#include "system.h"
#include "alloc.h"
#include "xalloc.h"
#include "gram.h"
#include "closure.h"
#include "derives.h"
#include "warshall.h"
short *itemset;
short *itemsetend;
@@ -122,7 +123,7 @@ set_firsts (void)
varsetsize = rowsize = WORDSIZE (nvars);
firsts = NEW2 (nvars * rowsize, unsigned);
firsts = XCALLOC (unsigned, nvars * rowsize);
row = firsts;
for (i = ntokens; i < nsyms; i++)
@@ -171,7 +172,7 @@ set_fderives (void)
int ruleno;
int i;
fderives = NEW2 (nvars * rulesetsize, unsigned) - ntokens * rulesetsize;
fderives = XCALLOC (unsigned, nvars * rulesetsize) - ntokens * rulesetsize;
set_firsts ();
@@ -208,17 +209,17 @@ set_fderives (void)
print_fderives ();
#endif
FREE (firsts);
XFREE (firsts);
}
void
new_closure (int n)
{
itemset = NEW2 (n, short);
itemset = XCALLOC (short, n);
rulesetsize = WORDSIZE (nrules + 1);
ruleset = NEW2 (rulesetsize, unsigned);
ruleset = XCALLOC (unsigned, rulesetsize);
set_fderives ();
}
@@ -310,7 +311,7 @@ closure (short *core, int n)
void
free_closure (void)
{
FREE (itemset);
FREE (ruleset);
FREE (fderives + ntokens * rulesetsize);
XFREE (itemset);
XFREE (ruleset);
XFREE (fderives + ntokens * rulesetsize);
}