[#14696] Inconsistency in rescuability of "return" — Charles Oliver Nutter <charles.nutter@...>

Why can you not rescue return, break, etc when they are within

21 messages 2008/01/02
[#14699] Re: Inconsistency in rescuability of "return" — Gary Wright <gwtmp01@...> 2008/01/02

[#14738] Enumerable#zip Needs Love — James Gray <james@...>

The community has been building a Ruby 1.9 compatibility tip list on

15 messages 2008/01/03
[#14755] Re: Enumerable#zip Needs Love — Martin Duerst <duerst@...> 2008/01/04

Hello James,

[#14772] Manual Memory Management — Pramukta Kumar <prak@...>

I was thinking it would be nice to be able to free large objects at

36 messages 2008/01/04
[#14788] Re: Manual Memory Management — Marcin Raczkowski <mailing.mr@...> 2008/01/05

I would only like to add that RMgick for example provides free method to

[#14824] Re: Manual Memory Management — MenTaLguY <mental@...> 2008/01/07

On Sat, 5 Jan 2008 15:49:30 +0900, Marcin Raczkowski <mailing.mr@gmail.com> wrote:

[#14825] Re: Manual Memory Management — "Evan Weaver" <evan@...> 2008/01/07

Python supports 'del reference', which decrements the reference

[#14838] Re: Manual Memory Management — Marcin Raczkowski <mailing.mr@...> 2008/01/08

Evan Weaver wrote:

[#14911] Draft of some pages about encoding in Ruby 1.9 — Dave Thomas <dave@...>

Folks:

24 messages 2008/01/10

[#14976] nil encoding as synonym for binary encoding — David Flanagan <david@...>

The following just appeared in the ChangeLog

37 messages 2008/01/11
[#14977] Re: nil encoding as synonym for binary encoding — Yukihiro Matsumoto <matz@...> 2008/01/11

Hi,

[#14978] Re: nil encoding as synonym for binary encoding — Dave Thomas <dave@...> 2008/01/11

[#14979] Re: nil encoding as synonym for binary encoding — David Flanagan <david@...> 2008/01/11

Dave Thomas wrote:

[#14993] Re: nil encoding as synonym for binary encoding — Dave Thomas <dave@...> 2008/01/11

[#14980] Re: nil encoding as synonym for binary encoding — Gary Wright <gwtmp01@...> 2008/01/11

[#14981] Re: nil encoding as synonym for binary encoding — Yukihiro Matsumoto <matz@...> 2008/01/11

Hi,

[#14995] Re: nil encoding as synonym for binary encoding — David Flanagan <david@...> 2008/01/11

Yukihiro Matsumoto writes:

[#15050] how to "borrow" the RDoc::RubyParser and HTMLGenerator — Phlip <phlip2005@...>

Core Rubies:

17 messages 2008/01/13
[#15060] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Eric Hodel <drbrain@...7.net> 2008/01/14

On Jan 13, 2008, at 08:54 AM, Phlip wrote:

[#15062] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Phlip <phlip2005@...> 2008/01/14

Eric Hodel wrote:

[#15073] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Eric Hodel <drbrain@...7.net> 2008/01/14

On Jan 13, 2008, at 20:35 PM, Phlip wrote:

[#15185] Friendlier methods to compare two Time objects — "Jim Cropcho" <jim.cropcho@...>

Hello,

10 messages 2008/01/22

[#15194] Can large scale projects be successful implemented around a dynamic programming language? — Jordi <mumismo@...>

A good article I have found (may have been linked by slashdot, don't know)

8 messages 2008/01/24

[#15248] Symbol#empty? ? — "David A. Black" <dblack@...>

Hi --

24 messages 2008/01/28
[#15250] Re: Symbol#empty? ? — Yukihiro Matsumoto <matz@...> 2008/01/28

Hi,

[1.9] rb_rescue2 crashes 1.9.0-0

From: ts <decoux@...>
Date: 2008-01-12 17:51:38 UTC
List: ruby-core #15040
 This is in reference to [ruby-talk:287175], there is a problem when
 eval() is called inside an embedded application.

 When backtrace(-1), or backtrace(-2) will be called in eval() it can
 return an empty array. Unfortunately this is never tested in the source,
 for example in eval.c

	if (state == TAG_RAISE) {
	    VALUE errinfo = th->errinfo;
	    if (strcmp(file, "(eval)") == 0) {
		VALUE mesg, errat;

		errat = get_backtrace(errinfo);
		mesg = rb_attr_get(errinfo, rb_intern("mesg"));
		if (!NIL_P(errat) && TYPE(errat) == T_ARRAY) {
		    if (!NIL_P(mesg) && TYPE(mesg) == T_STRING) {
			rb_str_update(mesg, 0, 0, rb_str_new2(": "));
			rb_str_update(mesg, 0, 0, RARRAY_PTR(errat)[0]);
		    }
		    RARRAY_PTR(errat)[0] = RARRAY_PTR(backtrace(-2))[0];
		}
	    }
	    rb_exc_raise(errinfo);


 errat and backtrace(-2) can have RARRAY_LEN() == 0, which can give strange
 error when ruby will call rb_exc_raise(errinfo)

 For example, for [ruby-talk:287175]

vgs% cat a.c
#include <ruby.h>

static VALUE 
eval_failed(VALUE v, VALUE exc)
{
    rb_warn("eval_failed");
    return exc;
}

static VALUE
aa(VALUE c)
{
    rb_warn("============ %s", (char *)c);
    return rb_rescue2(rb_eval_string, c, eval_failed, Qnil, rb_eException, 0);
}


int main(int argc, char **argv) {
    VALUE retv;
    int i, state = 0;
    char *codes[] = {
        "de foo; puts \"in foo()\"; end",
        "1/0"
    };
    
    RUBY_INIT_STACK;
    ruby_init();
    ruby_init_loadpath();

    for (i = 0; i < 2; i++) {
	retv = rb_protect(aa, (VALUE)codes[i], &state);
	if (state) {
	    rb_warn("state = %d", state);
	}
	if (rb_obj_is_kind_of(retv, rb_eException)) {
	    rb_warn("exception");
	}
    }

    ruby_finalize();
    exit(0);
}

vgs% 

vgs% ./a.out
<dummy toplevel>:17: warning: ============ de foo; puts "in foo()"; end
<dummy toplevel>:17: warning: eval_failed
<dummy toplevel>:17: warning: exception
<dummy toplevel>:17: warning: ============ 1/0
<dummy toplevel>:17: warning: state = 8
vgs% 


Guy Decoux

In This Thread

Prev Next