summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-06-23 21:21:00 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-06-23 21:21:00 +0000
commite5e37ecfc2297ee70d56a00e6c12aa34eaec889e (patch)
tree4409730ec3c2bbdbb2ea3dc5beec3c1855efbfad
parente3e359ba793459938e338944856b4db1711d637a (diff)
* eval.c (setup_exception): "mesg == sysstack_error" and
sysstack_error_p(mesg) are duplicated. r46502 seems to want to use latter. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46531 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog6
-rw-r--r--eval.c24
2 files changed, 12 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index 0ce5f9c45b..887e9b7b48 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Tue Jun 24 06:17:52 2014 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * eval.c (setup_exception): "mesg == sysstack_error" and
+ sysstack_error_p(mesg) are duplicated.
+ r46502 seems to want to use latter.
+
Tue Jun 24 06:15:36 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/tk/tcltklib.c: fix format specifiers for VALUE and
diff --git a/eval.c b/eval.c
index 4dada48882..a80940e20d 100644
--- a/eval.c
+++ b/eval.c
@@ -492,25 +492,13 @@ setup_exception(rb_thread_t *th, int tag, volatile VALUE mesg, VALUE cause)
file = rb_sourcefile();
if (file) line = rb_sourceline();
if (file && !NIL_P(mesg)) {
- if (mesg == sysstack_error) {
- ID func = rb_frame_this_func();
- at = rb_enc_sprintf(rb_usascii_encoding(), "%s:%d", file, line);
- if (func) {
- VALUE name = rb_id2str(func);
- if (name) rb_str_catf(at, ":in `%"PRIsVALUE"'", name);
- }
- at = rb_ary_new3(1, at);
- rb_iv_set(mesg, "bt", at);
- }
- else {
- if (sysstack_error_p(mesg) || NIL_P(at = get_backtrace(mesg))) {
- at = rb_vm_backtrace_object();
- if (OBJ_FROZEN(mesg)) {
- mesg = rb_obj_dup(mesg);
- }
- rb_iv_set(mesg, "bt_locations", at);
- set_backtrace(mesg, at);
+ if (sysstack_error_p(mesg) || NIL_P(at = get_backtrace(mesg))) {
+ at = rb_vm_backtrace_object();
+ if (OBJ_FROZEN(mesg)) {
+ mesg = rb_obj_dup(mesg);
}
+ rb_iv_set(mesg, "bt_locations", at);
+ set_backtrace(mesg, at);
}
}