diff --git a/pkgs/racket-test-core/tests/racket/syntax.rktl b/pkgs/racket-test-core/tests/racket/syntax.rktl index 9417cafaa5..988d57a635 100644 --- a/pkgs/racket-test-core/tests/racket/syntax.rktl +++ b/pkgs/racket-test-core/tests/racket/syntax.rktl @@ -2037,4 +2037,19 @@ ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(module provide-transformer-set!-and-broken-module-begin racket + (provide + (for-syntax set!) + (rename-out (defined-begin #%module-begin))) + + (define-syntax (defined-begin stx) + (syntax-case stx () + [(_ e ...) + #`(#%plain-module-begin #,@(map expand (syntax->list #'(e ...))))]))) + +(err/rt-test (eval '(module m 'provide-transformer-set!-and-broken-module-begin (set! x 1))) + exn:fail:syntax?) + +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + (report-errs) diff --git a/racket/src/racket/src/compenv.c b/racket/src/racket/src/compenv.c index 312534a646..211b47fac0 100644 --- a/racket/src/racket/src/compenv.c +++ b/racket/src/racket/src/compenv.c @@ -692,10 +692,12 @@ void scheme_register_unbound_toplevel(Scheme_Comp_Env *env, Scheme_Object *id) { Comp_Prefix *cp = env->prefix; - if (!cp->unbound) cp->unbound = scheme_null; - - id = scheme_make_pair(id, cp->unbound); - cp->unbound = id; + if (cp) { + if (!cp->unbound) cp->unbound = scheme_null; + + id = scheme_make_pair(id, cp->unbound); + cp->unbound = id; + } } void scheme_merge_undefineds(Scheme_Comp_Env *exp_env, Scheme_Comp_Env *env)