From 309077c9ae3b530052dce39ab871a04bce1b9468 Mon Sep 17 00:00:00 2001 From: akr Date: Mon, 12 Apr 2010 13:49:44 +0000 Subject: * enumerator.c (inspect_enumerator): don't raise for uninitialized enumerator. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27322 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ enumerator.c | 12 ++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 55cafec259..d7b1164923 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Apr 12 22:48:47 2010 Tanaka Akira + + * enumerator.c (inspect_enumerator): don't raise for uninitialized + enumerator. + Mon Apr 12 21:47:41 2010 Nobuyoshi Nakada * LEGAL: separated the section for parse.c. contributed by Paul diff --git a/enumerator.c b/enumerator.c index 53cd49a361..91bb3be14f 100644 --- a/enumerator.c +++ b/enumerator.c @@ -725,11 +725,19 @@ enumerator_rewind(VALUE obj) static VALUE inspect_enumerator(VALUE obj, VALUE dummy, int recur) { - struct enumerator *e = enumerator_ptr(obj); - const char *cname = rb_obj_classname(obj); + struct enumerator *e; + const char *cname; VALUE eobj, str; int tainted, untrusted; + TypedData_Get_Struct(obj, struct enumerator, &enumerator_data_type, e); + + cname = rb_obj_classname(obj); + + if (!e || e->obj == Qundef) { + return rb_sprintf("#<%s: uninitialized>", cname); + } + if (recur) { str = rb_sprintf("#<%s: ...>", cname); OBJ_TAINT(str); -- cgit v1.2.3