diff options
| -rw-r--r-- | include/mruby.h | 2 | ||||
| -rw-r--r-- | mrbgems/mruby-struct/src/struct.c | 4 | ||||
| -rw-r--r-- | src/error.c | 14 | ||||
| -rw-r--r-- | src/parse.y | 2 |
4 files changed, 12 insertions, 10 deletions
diff --git a/include/mruby.h b/include/mruby.h index 14ea9d9fb..272a0d420 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -300,7 +300,7 @@ void mrb_raise(mrb_state *mrb, struct RClass *c, const char *msg); void mrb_raisef(mrb_state *mrb, struct RClass *c, const char *fmt, ...); void mrb_name_error(mrb_state *mrb, mrb_sym id, const char *fmt, ...); void mrb_warn(mrb_state *mrb, const char *fmt, ...); -void mrb_bug(const char *fmt, ...); +void mrb_bug(mrb_state *mrb, const char *fmt, ...); /* macros to get typical exception objects note: diff --git a/mrbgems/mruby-struct/src/struct.c b/mrbgems/mruby-struct/src/struct.c index e58394005..2775471fe 100644 --- a/mrbgems/mruby-struct/src/struct.c +++ b/mrbgems/mruby-struct/src/struct.c @@ -716,7 +716,7 @@ mrb_struct_equal(mrb_state *mrb, mrb_value s) equal_p = 0; } else if (RSTRUCT_LEN(s) != RSTRUCT_LEN(s2)) { - mrb_bug("inconsistent struct"); /* should never happen */ + mrb_bug(mrb, "inconsistent struct"); /* should never happen */ equal_p = 0; /* This substuture is just to suppress warnings. never called. */ } else { @@ -760,7 +760,7 @@ mrb_struct_eql(mrb_state *mrb, mrb_value s) eql_p = 0; } else if (RSTRUCT_LEN(s) != RSTRUCT_LEN(s2)) { - mrb_bug("inconsistent struct"); /* should never happen */ + mrb_bug(mrb, "inconsistent struct"); /* should never happen */ eql_p = 0; /* This substuture is just to suppress warnings. never called. */ } else { diff --git a/src/error.c b/src/error.c index 37914666f..1ac42455c 100644 --- a/src/error.c +++ b/src/error.c @@ -327,15 +327,17 @@ mrb_warn(mrb_state *mrb, const char *fmt, ...) } void -mrb_bug(const char *fmt, ...) +mrb_bug(mrb_state *mrb, const char *fmt, ...) { #ifdef ENABLE_STDIO - va_list args; + va_list ap; + mrb_value str; - va_start(args, fmt); - printf("bug: "); - vprintf(fmt, args); - va_end(args); + va_start(ap, fmt); + str = mrb_vformat(mrb, fmt, ap); + fputs("bug: ", stderr); + fwrite(RSTRING_PTR(str), RSTRING_LEN(str), 1, stderr); + va_end(ap); #endif exit(EXIT_FAILURE); } diff --git a/src/parse.y b/src/parse.y index 5eaa61b2a..fc2d09f23 100644 --- a/src/parse.y +++ b/src/parse.y @@ -3209,7 +3209,7 @@ backref_error(parser_state *p, node *n) } else if (c == NODE_BACK_REF) { yyerror_i(p, "can't set variable $%c", (int)(intptr_t)n->cdr); } else { - mrb_bug("Internal error in backref_error() : n=>car == %d", c); + mrb_bug(p->mrb, "Internal error in backref_error() : n=>car == %d", c); } } |
