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)
|
(set! checked? #t)
|
||||||
v)))
|
v)))
|
||||||
(test #t values checked?))
|
(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
|
;; channel chaperones
|
||||||
|
|
|
@ -1521,7 +1521,7 @@ static int evt_struct_is_ready(Scheme_Object *o, Scheme_Schedule_Info *sinfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SCHEME_INTP(v))
|
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)) {
|
if (scheme_is_evt(v)) {
|
||||||
scheme_set_sync_target(sinfo, v, NULL, NULL, 0, 1, NULL);
|
scheme_set_sync_target(sinfo, v, NULL, NULL, 0, 1, NULL);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user