mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* vm.c (vm_backtrace_each): get rid of use of malloc from signal
handler by using ruby_engine_name. [ruby-core:29497] * vm_eval.c (print_backtrace): file may be nil when segfaulted in very early stage. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27345 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
073515a649
commit
584829aa81
4 changed files with 22 additions and 4 deletions
|
@ -1,3 +1,11 @@
|
|||
Thu Apr 15 14:38:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* vm.c (vm_backtrace_each): get rid of use of malloc from signal
|
||||
handler by using ruby_engine_name. [ruby-core:29497]
|
||||
|
||||
* vm_eval.c (print_backtrace): file may be nil when segfaulted in
|
||||
very early stage.
|
||||
|
||||
Thu Apr 15 11:51:49 2010 NAKAMURA Usaku <usa@ruby-lang.org>
|
||||
|
||||
* common.mk (help): small fix.
|
||||
|
|
|
@ -57,6 +57,7 @@ const int ruby_patchlevel = RUBY_PATCHLEVEL;
|
|||
const char ruby_description[] = RUBY_DESCRIPTION;
|
||||
const char ruby_copyright[] = RUBY_COPYRIGHT;
|
||||
const char ruby_engine[] = "ruby";
|
||||
VALUE ruby_engine_name = Qnil;
|
||||
|
||||
const char ruby_initial_load_paths[] =
|
||||
#ifndef NO_INITIAL_LOAD_PATH
|
||||
|
@ -95,7 +96,7 @@ Init_version(void)
|
|||
rb_define_global_const("RUBY_REVISION", INT2FIX(RUBY_REVISION));
|
||||
rb_define_global_const("RUBY_DESCRIPTION", MKSTR(description));
|
||||
rb_define_global_const("RUBY_COPYRIGHT", MKSTR(copyright));
|
||||
rb_define_global_const("RUBY_ENGINE", MKSTR(engine));
|
||||
rb_define_global_const("RUBY_ENGINE", ruby_engine_name = MKSTR(engine));
|
||||
}
|
||||
|
||||
void
|
||||
|
|
3
vm.c
3
vm.c
|
@ -732,8 +732,9 @@ vm_backtrace_each(rb_thread_t *th, int lev, rb_backtrace_iter_func *iter, void *
|
|||
}
|
||||
else if (RUBYVM_CFUNC_FRAME_P(cfp)) {
|
||||
ID id;
|
||||
extern VALUE ruby_engine_name;
|
||||
|
||||
if (NIL_P(file)) file = rb_str_new_cstr("ruby");
|
||||
if (NIL_P(file)) file = ruby_engine_name;
|
||||
if (cfp->me->def)
|
||||
id = cfp->me->def->original_id;
|
||||
else
|
||||
|
|
12
vm_eval.c
12
vm_eval.c
|
@ -1573,8 +1573,16 @@ rb_f_caller(int argc, VALUE *argv)
|
|||
static int
|
||||
print_backtrace(void *arg, VALUE file, int line, VALUE method)
|
||||
{
|
||||
fprintf((FILE *)arg, "\tfrom %s:%d:in `%s'\n",
|
||||
RSTRING_PTR(file), line, RSTRING_PTR(method));
|
||||
FILE *fp = arg;
|
||||
const char *filename = NIL_P(file) ? "ruby" : RSTRING_PTR(file);
|
||||
if (NIL_P(method)) {
|
||||
fprintf(fp, "\tfrom %s:%d:in unknown method\n",
|
||||
filename, line);
|
||||
}
|
||||
else {
|
||||
fprintf(fp, "\tfrom %s:%d:in `%s'\n",
|
||||
filename, line, RSTRING_PTR(method));
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue