diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | eval.c | 1 | ||||
-rw-r--r-- | eval_error.c | 8 | ||||
-rw-r--r-- | version.h | 2 |
4 files changed, 13 insertions, 4 deletions
@@ -1,3 +1,9 @@ +Wed Aug 5 12:39:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * eval.c (rb_longjmp): reset raised flag before fatal error. + + * eval_error.c (error_print): file can be NULL. line can be 0. + Wed Aug 5 01:38:27 2009 Yusuke Endoh <mame@tsg.ne.jp> * lib/pp.rb (guard_inspect_key): untrust internal hash to prevent @@ -345,6 +345,7 @@ rb_longjmp(int tag, VALUE mesg) if (rb_thread_set_raised(th)) { th->errinfo = exception_error; + rb_thread_reset_raised(th); JUMP_TAG(TAG_FATAL); } diff --git a/eval_error.c b/eval_error.c index 622ae4fdd9..65f1f4a7b7 100644 --- a/eval_error.c +++ b/eval_error.c @@ -87,10 +87,12 @@ error_print(void) if (NIL_P(errat)) { const char *file = rb_sourcefile(); int line = rb_sourceline(); - if (file) - warn_printf("%s:%d", file, line); - else + if (!file) warn_printf("%d", line); + else if (!line) + warn_printf("%s", file); + else + warn_printf("%s:%d", file, line); } else if (RARRAY_LEN(errat) == 0) { error_pos(); @@ -1,5 +1,5 @@ #define RUBY_VERSION "1.9.1" -#define RUBY_PATCHLEVEL 271 +#define RUBY_PATCHLEVEL 272 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 9 #define RUBY_VERSION_TEENY 1 |