From 53d6dc469c43127f498283a59194d4fbefead19e Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Wed, 7 Jul 2021 15:57:30 -0700 Subject: streams: put-string, put-char: missing type check. * stream.c (put_string, put_char): Use cobj_handle to validate the object, rather than directly accessing stream->co.handle. This was reported as a (put-line "foo" nil) crash reported by Paul A. Patience. --- stream.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'stream.c') diff --git a/stream.c b/stream.c index e72c7e1c..338a1e8e 100644 --- a/stream.c +++ b/stream.c @@ -3855,7 +3855,8 @@ val put_string(val string, val stream_in) { val self = lit("put-string"); val stream = default_arg_strict(stream_in, std_output); - struct strm_base *s = coerce(struct strm_base *, stream->co.handle); + struct strm_base *s = coerce(struct strm_base *, + cobj_handle(self, stream, stream_s)); if (lazy_stringp(string)) { return lazy_str_put(string, stream_in, s); @@ -3900,7 +3901,8 @@ val put_char(val ch, val stream_in) val stream = default_arg_strict(stream_in, std_output); struct strm_ops *ops = coerce(struct strm_ops *, cobj_ops(self, stream, stream_s)); - struct strm_base *s = coerce(struct strm_base *, stream->co.handle); + struct strm_base *s = coerce(struct strm_base *, + cobj_handle(self, stream, stream_s)); wint_t cch = c_chr(ch); switch (cch) { -- cgit v1.2.3