cs: fix prop:chaperone-unsafe-undefined-triggered error

This commit is contained in:
Matthew Flatt 2019-01-13 18:10:22 -07:00
parent 9b2431e670
commit 0602c7e21b
2 changed files with 4 additions and 3 deletions

View File

@ -56,7 +56,8 @@
rtd)
(let ([r (loop (impersonator-next v))])
(when (eq? r unsafe-undefined)
(raise-unsafe-undefined 'struct-ref "undefined" "use" acc (impersonator-val v) (cdr key)))
(let ([abs-pos (fx+ (cdr key) (struct-type-parent-total*-count (car key)))])
(raise-unsafe-undefined 'struct-ref "undefined" "use" acc (impersonator-val v) abs-pos)))
r)]
[(impersonator? v)
(loop (impersonator-next v))]
@ -95,7 +96,7 @@
(when (eq? (unsafe-struct*-ref (impersonator-val v) abs-pos) unsafe-undefined)
(unless (eq? (continuation-mark-set-first #f prop:chaperone-unsafe-undefined)
unsafe-undefined)
(raise-unsafe-undefined 'struct-set! "assignment disallowed" "assign" set (impersonator-val v) pos)))
(raise-unsafe-undefined 'struct-set! "assignment disallowed" "assign" set (impersonator-val v) abs-pos)))
(loop (impersonator-next v) a)]
[(impersonator? v)
(loop (impersonator-next v) a)]