diff options
| author | KOBAYASHI Shuji <[email protected]> | 2019-12-16 18:57:53 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2019-12-16 18:57:53 +0900 |
| commit | 854c61c3aba786d2e9539a3b2fcb7e48cc8a21f5 (patch) | |
| tree | 38cb06c2926104bed83d3e334526b2f52b70a9ef /src/backtrace.c | |
| parent | 85b4ed623e9894f5933df306009a558b0fa3737b (diff) | |
| download | mruby-854c61c3aba786d2e9539a3b2fcb7e48cc8a21f5.tar.gz mruby-854c61c3aba786d2e9539a3b2fcb7e48cc8a21f5.zip | |
Remove unneeded null checks to `struct backtrace_location::filename`
`struct backtrace_location` is created only in `each_backtrace()`, and
the `filename` field will never be null (it will be `(unknown)` if null).
Diffstat (limited to 'src/backtrace.c')
| -rw-r--r-- | src/backtrace.c | 28 |
1 files changed, 5 insertions, 23 deletions
diff --git a/src/backtrace.c b/src/backtrace.c index 803c5e285..4ae2bc89d 100644 --- a/src/backtrace.c +++ b/src/backtrace.c @@ -93,20 +93,6 @@ print_backtrace(mrb_state *mrb, mrb_value backtrace) } } -static int -packed_bt_len(const struct backtrace_location *bt, int n) -{ - int len = 0; - int i; - - for (i=0; i<n; i++) { - if (!bt[i].filename && !bt[i].lineno && !bt[i].method_id) - continue; - len++; - } - return len; -} - static void print_packed_backtrace(mrb_state *mrb, mrb_value packed) { @@ -117,14 +103,13 @@ print_packed_backtrace(mrb_state *mrb, mrb_value packed) bt = (struct backtrace_location*)mrb_data_check_get_ptr(mrb, packed, &bt_type); if (bt == NULL) return; - n = (mrb_int)RDATA(packed)->flags; + n = (int)RDATA(packed)->flags; + if (n == 0) return; - if (packed_bt_len(bt, n) == 0) return; fprintf(stream, "trace (most recent call last):\n"); for (i = 0; i<n; i++) { const struct backtrace_location *entry = &bt[n-i-1]; - if (entry->filename == NULL) continue; - fprintf(stream, "\t[%d] %s:%d", i, entry->filename, entry->lineno); + fprintf(stream, "\t[%d] %s:%d", i, entry->filename, (int)entry->lineno); if (entry->method_id != 0) { const char *method_name; @@ -175,7 +160,6 @@ count_backtrace_i(mrb_state *mrb, { int *lenp = (int*)data; - if (loc->filename == NULL) return; (*lenp)++; } @@ -187,7 +171,6 @@ pack_backtrace_i(mrb_state *mrb, struct backtrace_location **pptr = (struct backtrace_location**)data; struct backtrace_location *ptr = *pptr; - if (loc->filename == NULL) return; *ptr = *loc; *pptr = ptr+1; } @@ -205,7 +188,7 @@ packed_backtrace(mrb_state *mrb) size = len * sizeof(struct backtrace_location); ptr = mrb_malloc(mrb, size); backtrace = mrb_data_object_alloc(mrb, NULL, ptr, &bt_type); - backtrace->flags = (unsigned int)len; + backtrace->flags = (uint32_t)len; each_backtrace(mrb, ciidx, mrb->c->ci->pc, pack_backtrace_i, &ptr); return mrb_obj_value(backtrace); } @@ -245,8 +228,7 @@ mrb_unpack_backtrace(mrb_state *mrb, mrb_value backtrace) const struct backtrace_location *entry = &bt[i]; mrb_value btline; - if (entry->filename == NULL) continue; - btline = mrb_format(mrb, "%s:%d", entry->filename, entry->lineno); + btline = mrb_format(mrb, "%s:%d", entry->filename, (int)entry->lineno); if (entry->method_id != 0) { mrb_str_cat_lit(mrb, btline, ":in "); mrb_str_cat_cstr(mrb, btline, mrb_sym_name(mrb, entry->method_id)); |
