prop:evt: support chaperone when extracting field
Thanks to Sam for noticing this problem.
This commit is contained in:
parent
a027e1445f
commit
fed14e1ce1
|
@ -1258,6 +1258,18 @@
|
|||
(set! checked? #t)
|
||||
v)))
|
||||
(test #t values checked?))
|
||||
(let ()
|
||||
(struct e (orig)
|
||||
#:property prop:evt 0)
|
||||
(define an-e (e always-evt))
|
||||
(define checked? #f)
|
||||
(test #t evt? an-e)
|
||||
(sync (chaperone-struct an-e
|
||||
e-orig
|
||||
(lambda (self v)
|
||||
(set! checked? #t)
|
||||
v)))
|
||||
(test #t values checked?))
|
||||
|
||||
;; ----------------------------------------
|
||||
;; channel chaperones
|
||||
|
|
|
@ -1521,7 +1521,7 @@ static int evt_struct_is_ready(Scheme_Object *o, Scheme_Schedule_Info *sinfo)
|
|||
}
|
||||
|
||||
if (SCHEME_INTP(v))
|
||||
v = ((Scheme_Structure *)o)->slots[SCHEME_INT_VAL(v)];
|
||||
v = scheme_struct_ref(o, SCHEME_INT_VAL(v));
|
||||
|
||||
if (scheme_is_evt(v)) {
|
||||
scheme_set_sync_target(sinfo, v, NULL, NULL, 0, 1, NULL);
|
||||
|
|
Loading…
Reference in New Issue
Block a user