- (ecase (descriptor-lowtag des)
- (#.sb!vm:list-pointer-lowtag
- (aver (not (cold-null des))) ; function named NIL? please no..
- ;; Do cold (DESTRUCTURING-BIND (COLD-CAR COLD-CADR) DES ..).
- (let* ((car-des (cold-car des))
- (cdr-des (cold-cdr des))
- (cadr-des (cold-car cdr-des))
- (cddr-des (cold-cdr cdr-des)))
- (aver (cold-null cddr-des))
- (list (warm-symbol car-des)
- (warm-symbol cadr-des))))
- (#.sb!vm:other-pointer-lowtag
- (warm-symbol des)))))
+ (if (symbolp des)
+ ;; This parallels the logic at the start of COLD-INTERN
+ ;; which re-homes symbols in SB-XC to COMMON-LISP.
+ (if (eq (symbol-package des) (find-package "SB-XC"))
+ (intern (symbol-name des) *cl-package*)
+ des)
+ (ecase (descriptor-lowtag des)
+ (#.sb!vm:list-pointer-lowtag
+ (aver (not (cold-null des))) ; function named NIL? please no..
+ ;; Do cold (DESTRUCTURING-BIND (COLD-CAR COLD-CADR) DES ..).
+ (let* ((car-des (cold-car des))
+ (cdr-des (cold-cdr des))
+ (cadr-des (cold-car cdr-des))
+ (cddr-des (cold-cdr cdr-des)))
+ (aver (cold-null cddr-des))
+ (list (warm-symbol car-des)
+ (warm-symbol cadr-des))))
+ (#.sb!vm:other-pointer-lowtag
+ (warm-symbol des))))))