summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-06-28 01:09:09 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-06-28 01:09:09 +0900
commit9726dbefb416f3f8b4fdf4cbe9f4d3bb5757003b (patch)
tree63491caaaa6e4e990672b80ba5a7853b0093682c
parent9a28ae921b9c789fa02a4931bebec46cd596acb4 (diff)
downloadmruby-9726dbefb416f3f8b4fdf4cbe9f4d3bb5757003b.tar.gz
mruby-9726dbefb416f3f8b4fdf4cbe9f4d3bb5757003b.zip
remove String class initialization in error.c; ref #2429
-rw-r--r--src/error.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/error.c b/src/error.c
index 01feecefd..dcb6063f8 100644
--- a/src/error.c
+++ b/src/error.c
@@ -91,10 +91,15 @@ static mrb_value
exc_to_s(mrb_state *mrb, mrb_value exc)
{
mrb_value mesg = mrb_attr_get(mrb, exc, mrb_intern_lit(mrb, "mesg"));
+ struct RObject *p;
if (!mrb_string_p(mesg)) {
return mrb_str_new_cstr(mrb, mrb_obj_classname(mrb, exc));
}
+ p = mrb_obj_ptr(mesg);
+ if (!p->c) {
+ p->c = mrb->string_class;
+ }
return mesg;
}
@@ -436,9 +441,6 @@ mrb_init_exception(mrb_state *mrb)
{
struct RClass *exception, *runtime_error, *script_error;
- /* initialize mrb->string_class before creating RString object for nomem_err */
- mrb->string_class = mrb_define_class(mrb, "String", mrb->object_class);
-
mrb->eException_class = exception = mrb_define_class(mrb, "Exception", mrb->object_class); /* 15.2.22 */
mrb_define_class_method(mrb, exception, "exception", mrb_instance_new, MRB_ARGS_ANY());
mrb_define_method(mrb, exception, "exception", exc_exception, MRB_ARGS_ANY());