From daadb8bd53c9a0038fe7f51652b72aaa9b93a220 Mon Sep 17 00:00:00 2001 From: matz Date: Wed, 10 Apr 2002 08:47:46 +0000 Subject: [PATCH] * variable.c (rb_obj_remove_instance_variable): raise NameError if specified instance variable is not defined. * variable.c (generic_ivar_remove): modified to check ivar existence. * class.c (rb_singleton_class): wrong condition; was creating unnecessary singleton class. * numeric.c (int_step): step may be a float less than 1. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_6@2349 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 18 ++++++++++++++++++ Makefile.in | 2 +- class.c | 4 +++- ext/extmk.rb.in | 6 +++--- lib/cgi/session.rb | 1 + lib/mkmf.rb | 6 +++--- numeric.c | 2 +- variable.c | 32 ++++++++++++++++++-------------- version.h | 4 ++-- 9 files changed, 50 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8ea5217051..dc8f15be1b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,30 @@ +<<<<<<< ChangeLog +Wed Apr 10 17:30:19 2002 Yukihiro Matsumoto + + * variable.c (rb_obj_remove_instance_variable): raise NameError if + specified instance variable is not defined. + + * variable.c (generic_ivar_remove): modified to check ivar + existence. + Wed Apr 10 14:16:45 2002 Nobuyoshi Nakada * misc/ruby-mode.el (ruby-font-lock-keywords): fontify symbols for unary operators and aset. +Sat Apr 6 02:04:49 2002 Guy Decoux + + * class.c (rb_singleton_class): wrong condition; was creating + unnecessary singleton class. + Thu Apr 4 15:45:12 2002 WATANABE Hirofumi * parse.y: avoid bison 1.34 warnings. add `;' at the end of a rule. +Thu Apr 4 01:08:23 2002 Yukihiro Matsumoto + + * numeric.c (int_step): step may be a float less than 1. + Wed Apr 3 01:54:10 2002 Nobuyoshi Nakada * ext/extmk.rb.in (enable_config): follow lib/mkmf.rb. diff --git a/Makefile.in b/Makefile.in index efc7355d51..97ef97b2b8 100644 --- a/Makefile.in +++ b/Makefile.in @@ -13,7 +13,7 @@ AUTOCONF = autoconf prefix = @prefix@ CFLAGS = @CFLAGS@ -CPPFLAGS = -I. -I$(srcdir) -I@includedir@ +CPPFLAGS = -I. -I$(srcdir) LDFLAGS = @STATIC@ $(CFLAGS) @LDFLAGS@ XLDFLAGS = @XLDFLAGS@ EXTLIBS = diff --git a/class.c b/class.c index 0a06c2d3e3..a7d2fed562 100644 --- a/class.c +++ b/class.c @@ -626,7 +626,9 @@ rb_singleton_class(obj) } DEFER_INTS; - if (FL_TEST(RBASIC(obj)->klass, FL_SINGLETON)) { + if (FL_TEST(RBASIC(obj)->klass, FL_SINGLETON) && + ((BUILTIN_TYPE(obj) != T_CLASS && BUILTIN_TYPE(obj) != T_MODULE) || + rb_iv_get(RBASIC(obj)->klass, "__attached__") == obj)) { klass = RBASIC(obj)->klass; } else { diff --git a/ext/extmk.rb.in b/ext/extmk.rb.in index 114d504097..27cd2760b0 100644 --- a/ext/extmk.rb.in +++ b/ext/extmk.rb.in @@ -75,8 +75,8 @@ if /mswin32/ =~ RUBY_PLATFORM else OUTFLAG = '-o ' end -LINK = "@CC@ #{OUTFLAG}conftest -I#$topdir -I#$top_srcdir #{CFLAGS} -I#$includedir @LDFLAGS@ %s %s %s conftest.c %s %s @LIBS@" -CPP = "@CPP@ @CPPFLAGS@ -I#$topdir -I#$top_srcdir #{CFLAGS} -I#$includedir %s %s %s conftest.c" +LINK = "@CC@ #{OUTFLAG}conftest -I#$topdir -I#$top_srcdir #{CFLAGS} @LDFLAGS@ %s %s %s conftest.c %s %s @LIBS@" +CPP = "@CPP@ @CPPFLAGS@ -I#$topdir -I#$top_srcdir #{CFLAGS} %s %s %s conftest.c" $log = open('extmk.log', 'w') @@ -416,7 +416,7 @@ hdrdir = #{$top_srcdir} CC = @CC@ CFLAGS = %s #{CFLAGS} #$CFLAGS -CPPFLAGS = -I$(topdir) -I$(hdrdir) -I@includedir@ %s #$CPPFLAGS +CPPFLAGS = -I$(topdir) -I$(hdrdir) %s #$CPPFLAGS DLDFLAGS = #$DLDFLAGS #$LDFLAGS LDSHARED = @LDSHARED@ #{defflag} ", if $static then "" else "@CCDLFLAGS@" end, $defs.join(" ") diff --git a/lib/cgi/session.rb b/lib/cgi/session.rb index 6173d51558..b5579bc340 100644 --- a/lib/cgi/session.rb +++ b/lib/cgi/session.rb @@ -134,6 +134,7 @@ class CGI end def update + return unless @hash @f.rewind for k,v in @hash @f.printf "%s=%s\n", CGI::escape(k), CGI::escape(v) diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 2d87ee1a48..52b3e128fa 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -64,8 +64,8 @@ if /mswin32/ =~ RUBY_PLATFORM else OUTFLAG = '-o ' end -LINK = "#{CONFIG['CC']} #{OUTFLAG}conftest -I#{$hdrdir} #{CFLAGS} -I#{CONFIG['includedir']} %s %s #{CONFIG['LDFLAGS']} %s conftest.c %s %s #{CONFIG['LIBS']}" -CPP = "#{CONFIG['CPP']} -E %s -I#{$hdrdir} #{CFLAGS} -I#{CONFIG['includedir']} %s %s conftest.c" +LINK = "#{CONFIG['CC']} #{OUTFLAG}conftest -I#{$hdrdir} #{CFLAGS} %s %s #{CONFIG['LDFLAGS']} %s conftest.c %s %s #{CONFIG['LIBS']}" +CPP = "#{CONFIG['CPP']} -E %s -I#{$hdrdir} #{CFLAGS} %s %s conftest.c" def rm_f(*files) targets = [] @@ -454,7 +454,7 @@ VPATH = $(srcdir) CC = #{CONFIG["CC"]} CFLAGS = #{CONFIG["CCDLFLAGS"]} #{CFLAGS} #{$CFLAGS} -CPPFLAGS = -I. -I$(hdrdir) -I$(srcdir) -I#{CONFIG["includedir"]} #{$defs.join(" ")} #{CONFIG["CPPFLAGS"]} #{$CPPFLAGS} +CPPFLAGS = -I. -I$(hdrdir) -I$(srcdir) #{$defs.join(" ")} #{CONFIG["CPPFLAGS"]} #{$CPPFLAGS} CXXFLAGS = $(CFLAGS) DLDFLAGS = #{$DLDFLAGS} #{$LDFLAGS} LDSHARED = #{CONFIG["LDSHARED"]} #{defflag} diff --git a/numeric.c b/numeric.c index d5896fe2d3..36292114f3 100644 --- a/numeric.c +++ b/numeric.c @@ -1411,7 +1411,7 @@ int_step(from, to, step) VALUE i = from; ID cmp; - if (NUM2INT(step) == 0) { + if (rb_equal(step, INT2FIX(0))) { rb_raise(rb_eArgError, "step cannot be 0"); } diff --git a/variable.c b/variable.c index a1335eb443..087f5e6cdd 100644 --- a/variable.c +++ b/variable.c @@ -254,8 +254,7 @@ rb_autoload_id(id, filename) { rb_secure(4); if (!rb_is_const_id(id)) { - rb_raise(rb_eNameError, "autoload must be constant name", - rb_id2name(id)); + rb_raise(rb_eNameError, "autoload must be constant name"); } if (!autoload_tbl) { @@ -812,22 +811,23 @@ generic_ivar_defined(obj, id) return Qfalse; } -static VALUE -generic_ivar_remove(obj, id) +static int +generic_ivar_remove(obj, id, valp) VALUE obj; ID id; + VALUE *valp; { st_table *tbl; - VALUE val; + int status; - if (!generic_iv_tbl) return Qnil; - if (!st_lookup(generic_iv_tbl, obj, &tbl)) return Qnil; - st_delete(tbl, &id, &val); + if (!generic_iv_tbl) return 0; + if (!st_lookup(generic_iv_tbl, obj, &tbl)) return 0; + status = st_delete(tbl, &id, valp); if (tbl->num_entries == 0) { st_delete(generic_iv_tbl, &obj, &tbl); st_free_table(tbl); } - return val; + return status; } void @@ -1020,16 +1020,20 @@ rb_obj_remove_instance_variable(obj, name) case T_OBJECT: case T_CLASS: case T_MODULE: - if (ROBJECT(obj)->iv_tbl) { - st_delete(ROBJECT(obj)->iv_tbl, &id, &val); + if (ROBJECT(obj)->iv_tbl && st_delete(ROBJECT(obj)->iv_tbl, &id, &val)) { + return val; } break; default: - if (FL_TEST(obj, FL_EXIVAR) || rb_special_const_p(obj)) - return generic_ivar_remove(obj, id); + if (FL_TEST(obj, FL_EXIVAR) || rb_special_const_p(obj)) { + if (generic_ivar_remove(obj, id, &val)) { + return val; + } + } break; } - return val; + rb_raise(rb_eNameError, "instance variable %s not defined", rb_id2name(id)); + return Qnil; /* not reached */ } static int diff --git a/version.h b/version.h index ee414c8658..cb05cfb6fe 100644 --- a/version.h +++ b/version.h @@ -1,4 +1,4 @@ #define RUBY_VERSION "1.6.7" -#define RUBY_RELEASE_DATE "2002-04-04" +#define RUBY_RELEASE_DATE "2002-04-10" #define RUBY_VERSION_CODE 167 -#define RUBY_RELEASE_CODE 20020404 +#define RUBY_RELEASE_CODE 20020410