diff options
author | Andy Wingo <wingo@pobox.com> | 2019-02-22 15:01:29 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2019-02-22 15:11:29 +0100 |
commit | 61a8c9300daeb730fe5094f889bf13241942be84 (patch) | |
tree | be251a985ba9d03b04e73f68d1679799298b002d /libguile/lightning/tests/boaddr_u.c | |
parent | c537f938d1c809eb26e42c66bcc2b67ee4f47300 (diff) | |
download | guile-61a8c9300daeb730fe5094f889bf13241942be84.tar.gz |
Fix race when expanding syntax-parameterize and define-syntax-parameter
* libguile/macros.c (scm_i_make_primitive_macro): Give primitive macros
a primitive-macro macro-type.
* module/ice-9/psyntax.scm (put-global-definition-hook)
(get-global-definition-hook): Inline into uses.
(make-binding): Change format of lexically defined or rebound syntax
parameters to just be the transformer, not a list of the transformer.
(resolve-identifier, expand-install-global, expand-body)
(syntax-parameterize): Adapt to use the variable object (box) holding
the top-level syntax parameter as the "key" for lookups into the
lexical environment, instead of a fresh object associated with the
syntax transformer.
* module/ice-9/psyntax-pp.scm: Regenerate.
Fixes #27476, a horrible race when one thread is expanding a
syntax-parameterize form including uses, and another thread is expanding
the corresponding define-syntax-parameter. See
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27476#102.
Diffstat (limited to 'libguile/lightning/tests/boaddr_u.c')
0 files changed, 0 insertions, 0 deletions