[#5563] Non-overridable and non-redefinable methods — Eric Mahurin <eric_mahurin@...>

Lately, I've been thinking about the future of ruby

44 messages 2005/08/19
[#5564] Re: Non-overridable and non-redefinable methods — Austin Ziegler <halostatue@...> 2005/08/19

On 8/19/05, Eric Mahurin <eric_mahurin@yahoo.com> wrote:

[#5571] Re: Non-overridable and non-redefinable methods — Eric Mahurin <eric_mahurin@...> 2005/08/19

--- Austin Ziegler <halostatue@gmail.com> wrote:

[#5574] Re: Non-overridable and non-redefinable methods — TRANS <transfire@...> 2005/08/20

Just wanted to add a few things.

[#5581] Re: Non-overridable and non-redefinable methods — Austin Ziegler <halostatue@...> 2005/08/20

On 8/19/05, TRANS <transfire@gmail.com> wrote:

[#5583] Re: Non-overridable and non-redefinable methods — "David A. Black" <dblack@...> 2005/08/20

Hi --

[#5585] Re: Non-overridable and non-redefinable methods — Eric Mahurin <eric_mahurin@...> 2005/08/20

--- "David A. Black" <dblack@wobblini.net> wrote:

[#5609] Pathname#walk for traversing path nodes (patch) — ES <ruby-ml@...>

Here is a small addition to Pathname against 1.9, probably suited

20 messages 2005/08/22

Re: Exceptions in threads all get converted to a TypeError

From: nobu.nokada@...
Date: 2005-08-16 22:37:55 UTC
List: ruby-core #5553
Hi,

At Wed, 17 Aug 2005 04:20:52 +0900,
Paul van Tilburg wrote in [ruby-core:05552]:
> I am using ruby1.8 from Debian unstable, which seems to be Ruby 1.8.2
> with some patches from CVS (ruby -v already returns 1.8.3).  I am
> experiencing some problems with exceptions in Threads since a few
> days/weeks.  They all seem to be converted to a TypeError, which makes
> debugging very hard for the app I am working on.

I have a patch, which is to reduce exception objects, however
it seems to fix the bug too.


Index: eval.c
===================================================================
RCS file: /cvs/ruby/src/ruby/eval.c,v
retrieving revision 1.818
diff -U2 -p -r1.818 eval.c
--- eval.c	16 Aug 2005 15:24:14 -0000	1.818
+++ eval.c	16 Aug 2005 22:28:23 -0000
@@ -4353,14 +4353,13 @@ rb_mod_protected_method_defined(mod, mid
 }
 
-NORETURN(static VALUE terminate_process _((int, const char *, long)));
+NORETURN(static VALUE terminate_process _((int, VALUE)));
 static VALUE
-terminate_process(status, mesg, mlen)
+terminate_process(status, mesg)
     int status;
-    const char *mesg;
-    long mlen;
+    VALUE mesg;
 {
     VALUE args[2];
     args[0] = INT2NUM(status);
-    args[1] = rb_str_new(mesg, mlen);
+    args[1] = mesg;
 
     rb_exc_raise(rb_class_new_instance(2, args, rb_eSystemExit));
@@ -4372,5 +4371,5 @@ rb_exit(status)
 {
     if (prot_tag) {
-	terminate_process(status, "exit", 4);
+	terminate_process(status, rb_str_new("exit", 4));
     }
     ruby_finalize();
@@ -4477,7 +4476,7 @@ rb_f_abort(argc, argv)
 
 	rb_scan_args(argc, argv, "1", &mesg);
-	StringValue(argv[0]);
-	rb_io_puts(argc, argv, rb_stderr);
-	terminate_process(EXIT_FAILURE, RSTRING(argv[0])->ptr, RSTRING(argv[0])->len);
+	StringValue(mesg);
+	rb_io_puts(1, &mesg, rb_stderr);
+	terminate_process(EXIT_FAILURE, mesg);
     }
     return Qnil;		/* not reached */
@@ -10490,5 +10489,5 @@ rb_thread_switch(n)
 	ruby_errinfo = th_raise_exception;
 	ruby_current_node = th_raise_node;
-	terminate_process(sysexit_status(ruby_errinfo), 0, 0);
+	rb_exc_raise(th_raise_exception);
 	break;
       case RESTORE_NORMAL:


-- 
Nobu Nakada

In This Thread