Skip to content

Commit 9189c8f

Browse files
committed
Correctly handle #f in set-overlay-renderers (racket/#3753)
A `#f` value used to be converted to a list by `flatten` and passed to `plot-area`, since `plot-area` was exported using `unsafe-provide`, it had no further checks and crashed racket with an invalid memory reference. See also #91
1 parent afd0a67 commit 9189c8f

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

plot-gui-lib/plot/private/gui/snip2d.rkt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@
198198
(define the-overlay-renderers #f)
199199

200200
(define/public (set-overlay-renderers renderers)
201-
(set! the-overlay-renderers (flatten renderers))
201+
(set! the-overlay-renderers (and renderers (flatten renderers)))
202202
(refresh))
203203

204204
(define (draw-overlay-renderers dc x y left top right bottom)

plot-test/plot/tests/PRs/snip-overlay-renderers.rkt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@
4444
;; the method.
4545
(send snip set-overlay-renderers
4646
(list (function cos -3 3) (list (vrule -1) (vrule 1))))
47+
(send snip draw dc 0 0 0 0 10 10 0 0 'no-caret)
48+
49+
;; Ensure that #f handled correctly, see
50+
;; https://github.com/racket/racket/issues/3753
51+
(send snip set-overlay-renderers #f)
4752
(send snip draw dc 0 0 0 0 10 10 0 0 'no-caret)))
4853
(send tl show #f)))))
4954

0 commit comments

Comments
 (0)