From 49b2e8c3a9ef9a0ba115c000327c0bcd62911e44 Mon Sep 17 00:00:00 2001 From: dearblue Date: Wed, 29 Apr 2020 16:57:25 +0900 Subject: Makes `mrb_any_to_s()` accept an object whose class is `NULL` When using `mrb_any_to_s()` for debugging purposes, giving an object whose class is `NULL` no longer causes a SIGSEGV and no crash. This is achieved by making `mrb_class_name()` and `mrb_str_cat_cstr()` null safe. --- src/class.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/class.c') diff --git a/src/class.c b/src/class.c index b0af74e74..d30edd41e 100644 --- a/src/class.c +++ b/src/class.c @@ -1728,7 +1728,10 @@ mrb_class_real(struct RClass* cl) MRB_API const char* mrb_class_name(mrb_state *mrb, struct RClass* c) { - mrb_value name = class_name_str(mrb, c); + mrb_value name; + + if (c == NULL) return NULL; + name = class_name_str(mrb, c); return RSTRING_PTR(name); } -- cgit v1.2.3