diff --git a/src/racket/src/places.c b/src/racket/src/places.c index f03b9d6c7c..1a5dd4c5e7 100644 --- a/src/racket/src/places.c +++ b/src/racket/src/places.c @@ -968,6 +968,7 @@ Scheme_Object *scheme_places_deep_copy_worker(Scheme_Object *so, Scheme_Hash_Tab if (copy) { SCHEME_CAR(pair) = car; SCHEME_CDR(pair) = cdr; + SCHEME_PAIR_COPY_FLAGS(pair, so); new_so = pair; } } diff --git a/src/racket/src/schpriv.h b/src/racket/src/schpriv.h index 5e015e5c4d..2ce021113c 100644 --- a/src/racket/src/schpriv.h +++ b/src/racket/src/schpriv.h @@ -165,6 +165,9 @@ void scheme_clear_ephemerons(void); #define PAIR_IS_NON_LIST 0x2 #define PAIR_FLAG_MASK 0x3 +#define SCHEME_PAIR_COPY_FLAGS(dest, src) (SCHEME_PAIR_FLAGS((dest)) |= (SCHEME_PAIR_FLAGS((src)) & PAIR_FLAG_MASK)) + + /*========================================================================*/ /* initialization */ /*========================================================================*/