diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2023-01-22 16:21:13 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2023-01-22 16:21:13 -0800 |
commit | 872aea5725559cbed6dd268032ea039f9f33e831 (patch) | |
tree | d7ebeab206a6bd2c75b5b9fab33c787a7a337e60 /stdlib | |
parent | 366a7fba840293f54ae49108f4bc5d3d94c848c4 (diff) | |
download | txr-872aea5725559cbed6dd268032ea039f9f33e831.tar.gz txr-872aea5725559cbed6dd268032ea039f9f33e831.tar.bz2 txr-872aea5725559cbed6dd268032ea039f9f33e831.zip |
bugfix: gc issue in parser interface.
* parser.c (lisp_parse_impl): Add a call to gc_hint,
to protect the parser object from garbage collection.
We allocate this object, and then use a raw pointer to
the parser, which leaves it exposed. This resulted in
a crash of the tests/010/json.tl test case (which runs
with the --gc-debug mode). The crash doesn't occur in
a regular build; it reproduced in build configured
with --no-gen-gc. Possibly, why it doesn't repro under
generational GC is that the hash table which associates
streams and parsers may be moving the objects into the
mature generation.
Diffstat (limited to 'stdlib')
0 files changed, 0 insertions, 0 deletions