mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
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:
@@ -20,7 +20,7 @@
|
||||
|
||||
#include "system.h"
|
||||
#include "getargs.h"
|
||||
#include "alloc.h"
|
||||
#include "xalloc.h"
|
||||
#include "files.h"
|
||||
#include "gram.h"
|
||||
#include "state.h"
|
||||
@@ -95,7 +95,7 @@ resolve_sr_conflict (int state, int lookaheadnum)
|
||||
unsigned *fp1;
|
||||
unsigned *fp2;
|
||||
int redprec;
|
||||
errs *errp = (errs *) xmalloc (sizeof (errs) + ntokens * sizeof (short));
|
||||
errs *errp = (errs *) xcalloc (sizeof (errs) + ntokens * sizeof (short), 1);
|
||||
short *errtokens = errp->errs;
|
||||
|
||||
/* find the rule to reduce by to get precedence of reduction */
|
||||
@@ -175,7 +175,7 @@ resolve_sr_conflict (int state, int lookaheadnum)
|
||||
/* Some tokens have been explicitly made errors. Allocate
|
||||
a permanent errs structure for this state, to record them. */
|
||||
i = (char *) errtokens - (char *) errp;
|
||||
err_table[state] = (errs *) xmalloc ((unsigned int) i);
|
||||
err_table[state] = (errs *) xcalloc ((unsigned int) i, 1);
|
||||
bcopy (errp, err_table[state], i);
|
||||
}
|
||||
else
|
||||
@@ -269,11 +269,11 @@ initialize_conflicts (void)
|
||||
{
|
||||
int i;
|
||||
|
||||
conflicts = NEW2 (nstates, char);
|
||||
shiftset = NEW2 (tokensetsize, unsigned);
|
||||
lookaheadset = NEW2 (tokensetsize, unsigned);
|
||||
conflicts = XCALLOC (char, nstates);
|
||||
shiftset = XCALLOC (unsigned, tokensetsize);
|
||||
lookaheadset = XCALLOC (unsigned, tokensetsize);
|
||||
|
||||
err_table = NEW2 (nstates, errs *);
|
||||
err_table = XCALLOC (errs *, nstates);
|
||||
|
||||
any_conflicts = 0;
|
||||
|
||||
@@ -718,7 +718,7 @@ print_reductions (int state)
|
||||
void
|
||||
finalize_conflicts (void)
|
||||
{
|
||||
FREE (conflicts);
|
||||
FREE (shiftset);
|
||||
FREE (lookaheadset);
|
||||
XFREE (conflicts);
|
||||
XFREE (shiftset);
|
||||
XFREE (lookaheadset);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user