From b6b9d0d40978093666267e3e5bb8dca3341f6129 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 19 Oct 2017 14:52:26 -0600 Subject: [PATCH] repair unmarshling fix Fixes a problem with 78fdee6b6b7132d3f684a263172d558fffd056bc --- racket/src/racket/src/env.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/racket/src/racket/src/env.c b/racket/src/racket/src/env.c index a8948b2f13..bf373213ad 100644 --- a/racket/src/racket/src/env.c +++ b/racket/src/racket/src/env.c @@ -1464,7 +1464,7 @@ scheme_add_global_keyword_symbol(Scheme_Object *name, Scheme_Object *obj, static Scheme_Object *vector_to_ht(Scheme_Object *vec, int kind) { Scheme_Hash_Tree *ht; - Scheme_Object *key, *val; + Scheme_Object *key, *val, *orig_val; intptr_t i; ht = scheme_make_hash_tree(kind); @@ -1474,9 +1474,11 @@ static Scheme_Object *vector_to_ht(Scheme_Object *vec, int kind) while (i -= 2) { key = SCHEME_VEC_ELS(vec)[i]; - val = SCHEME_VEC_ELS(vec)[i+1]; + orig_val = SCHEME_VEC_ELS(vec)[i+1]; - val = scheme_stx_force_delayed(val); + val = scheme_stx_force_delayed(orig_val); + if (val != orig_val) + SCHEME_VEC_ELS(vec)[i+1] = val; /* defend against bad bytecode here, too: */ if (kind) {