summaryrefslogtreecommitdiffhomepage
path: root/src/backtrace.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-04-25 10:39:11 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-04-25 10:41:50 +0900
commit88cd807379152ea3fec5f534e5f4d6ebebd53982 (patch)
treef6b27a76821b8b92f6fc474ce56aab5795afb51b /src/backtrace.c
parent03cdb8e9dd3447115530418c2b8183c94dee2a53 (diff)
downloadmruby-88cd807379152ea3fec5f534e5f4d6ebebd53982.tar.gz
mruby-88cd807379152ea3fec5f534e5f4d6ebebd53982.zip
Avoid use of `snprintf()` when DISABLE_STDIO is set; fix #3632
ref #3492 #3515 #3517
Diffstat (limited to 'src/backtrace.c')
-rw-r--r--src/backtrace.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/backtrace.c b/src/backtrace.c
index d634123b4..b60c375f3 100644
--- a/src/backtrace.c
+++ b/src/backtrace.c
@@ -74,14 +74,12 @@ static void
get_backtrace_i(mrb_state *mrb, struct backtrace_location *loc, void *data)
{
mrb_value ary, str;
- char buf[32];
int ai = mrb_gc_arena_save(mrb);
ary = mrb_obj_value((struct RArray*)data);
str = mrb_str_new_cstr(mrb, loc->filename);
- snprintf(buf, sizeof(buf), ":%d", loc->lineno);
- mrb_str_cat_cstr(mrb, str, buf);
+ str = mrb_format(mrb, "%S:%S", str, mrb_fixnum_value(loc->lineno));
if (loc->method) {
mrb_str_cat_lit(mrb, str, ":in ");
@@ -400,14 +398,13 @@ mrb_restore_backtrace(mrb_state *mrb)
int ai;
mrb_backtrace_entry *entry;
mrb_value mrb_entry;
- char buf[32];
ai = mrb_gc_arena_save(mrb);
entry = &(mrb->backtrace.entries[i]);
- mrb_entry = mrb_str_new_cstr(mrb, entry->filename);
- snprintf(buf, sizeof(buf), ":%d", entry->lineno);
- mrb_str_cat_cstr(mrb, mrb_entry, buf);
+ mrb_entry = mrb_format(mrb, "%S:%S",
+ mrb_str_new_cstr(mrb, entry->filename),
+ mrb_fixnum_value(entry->lineno));
if (entry->method_id != 0) {
mrb_str_cat_lit(mrb, mrb_entry, ":in ");