diff options
author | Andy Wingo <wingo@pobox.com> | 2009-12-20 15:29:09 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-12-20 15:30:32 +0100 |
commit | fd5985271fee3bcb6a290b6ad10525980a97ef8d (patch) | |
tree | 6bbdcf18661bf2b1531342bbdc6fd353a23a941e /libguile/load.c | |
parent | ef73663576c54d04bd9f1dfe1cdf587515e5cc71 (diff) | |
download | guile-fd5985271fee3bcb6a290b6ad10525980a97ef8d.tar.gz |
psyntax's labels and marks now unique over a read/write boundary
* module/ice-9/psyntax.scm (gen-label, new-mark): Labels and marks need
to be unique across read/write boundaries -- it's not sufficient for
them to simply be unique within a process by virtue of (string #\i)
constructing a new object. This used to mostly work before, because
the collapsing of duplicate constants didn't catch many syntax-object
cases -- but for some reason the attached test case brings out the
problem. So switch to use gensyms. Potentially more costly, but it's
what upstream psyntax does now.
This bug took me fully two days to figure out.
* module/ice-9/psyntax-pp.scm: Regenerated.
* test-suite/tests/syncase.test ("serializable labels and marks"): Add
test case.
Diffstat (limited to 'libguile/load.c')
0 files changed, 0 insertions, 0 deletions