Fix `%nonassoc and eof'.

* src/state.c (errs_dup): Aaaah!  The failure was due to bytes
which were not properly copied!  Replace
memcpy (res->errs, src->errs, src->nerrs);
with
memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
!!!
* tests/regression.at (%nonassoc and eof): Adjust to newest
Autotest: `.' is not in the PATH.
This commit is contained in:
Akim Demaille
2002-01-27 13:57:17 +00:00
parent 318b76e913
commit 82841af7d0
4 changed files with 21 additions and 8 deletions

View File

@@ -1,3 +1,16 @@
2002-01-27 Akim Demaille <akim@epita.fr>
Fix `%nonassoc and eof'.
* src/state.c (errs_dup): Aaaah! The failure was due to bytes
which were not properly copied! Replace
memcpy (res->errs, src->errs, src->nerrs);
with
memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
!!!
* tests/regression.at (%nonassoc and eof): Adjust to newest
Autotest: `.' is not in the PATH.
2002-01-27 Akim Demaille <akim@epita.fr>
* tests/sets.at (AT_EXTRACT_SETS): New.

View File

@@ -364,9 +364,9 @@ save_reductions (void)
}
/*--------------------.
/*---------------.
| Build STATES. |
`--------------------*/
`---------------*/
static void
set_states (void)

View File

@@ -61,7 +61,7 @@ errs *
errs_dup (errs *src)
{
errs *res = errs_new (src->nerrs);
memcpy (res->errs, src->errs, src->nerrs);
memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
return res;
}

View File

@@ -75,20 +75,20 @@ main (int argc, const char *argv[])
AT_CHECK([bison input.y -o input.c])
AT_CHECK([$CC $CFLAGS $CPPFLAGS input.c -o input], 0, [], [ignore])
AT_CHECK([input '0<0'])
AT_CHECK([./input '0<0'])
# FIXME: This is an actual bug, but a new one, in the sense that
# no one has ever spotted it! The messages are *wrong*: there should
# be nothing there, it should be expected eof.
AT_CHECK([input '0<0<0'], [1], [],
AT_CHECK([./input '0<0<0'], [1], [],
[parse error, unexpected '<', expecting '<' or '>'
])
AT_CHECK([input '0>0'])
AT_CHECK([input '0>0>0'], [1], [],
AT_CHECK([./input '0>0'])
AT_CHECK([./input '0>0>0'], [1], [],
[parse error, unexpected '>', expecting '<' or '>'
])
AT_CHECK([input '0<0>0'], [1], [],
AT_CHECK([./input '0<0>0'], [1], [],
[parse error, unexpected '>', expecting '<' or '>'
])