diff --git a/ChangeLog b/ChangeLog index e538a5db28..f711a6f68f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Tue Mar 13 14:41:16 2001 Yukihiro Matsumoto + + * io.c (argf_seek): wrong calling sequence of rb_io_seek(). + Mon Mar 12 18:59:38 2001 WATANABE Hirofumi * lib/mkmf.rb (create_makefile): save/restore $libs and $LIBPATH. @@ -19,6 +23,14 @@ Wed Mar 7 14:26:11 2001 WATANABE Hirofumi * math.c (math_log, math_log10): should return NaN if x < 0.0 on Cygwin. +Thu Mar 7 10:31:26 2001 Nobuyoshi Nakada + + * parse.y (stmt): while/until modifier must work for empty body. + +Tue Mar 6 22:53:58 2001 Kazuhiro Yoshida + + * ruby.c (ruby_set_argv): clear ARGV contents before adding args. + Tue Mar 6 10:50:29 2001 Yukihiro Matsumoto * parse.y (primary): rescue and ensure clauses should be allowed diff --git a/eval.c b/eval.c index 81ef5a9f32..e327dc53c9 100644 --- a/eval.c +++ b/eval.c @@ -4160,7 +4160,7 @@ stack_length(p) #endif if (p) *p = STACK_END; -#ifdef sparc +#ifdef __sparc__ return rb_gc_stack_start - STACK_END + 0x80; #else return (STACK_END < rb_gc_stack_start) ? rb_gc_stack_start - STACK_END @@ -6450,7 +6450,7 @@ block_pass(self, node) break; case TAG_BREAK: if (orphan) { - rb_raise(rb_eLocalJumpError, "retry from proc-closure"); + rb_raise(rb_eLocalJumpError, "break from proc-closure"); } break; case TAG_RETRY: diff --git a/io.c b/io.c index ec699ad46d..0375b87cc4 100644 --- a/io.c +++ b/io.c @@ -3095,8 +3095,9 @@ argf_tell() } static VALUE -argf_seek(self, offset, ptrname) - VALUE self, offset, ptrname; +argf_seek(argc, argv) + int argc; + VALUE *argv; { if (!next_argv()) { rb_raise(rb_eArgError, "no stream to seek"); @@ -3105,7 +3106,7 @@ argf_seek(self, offset, ptrname) if (TYPE(current_file) != T_FILE) { return argf_forward(); } - return rb_io_seek(current_file, offset, ptrname); + return rb_io_seek(argc, argv, current_file); } static VALUE @@ -3474,7 +3475,7 @@ Init_IO() rb_define_singleton_method(argf, "getc", argf_getc, 0); rb_define_singleton_method(argf, "readchar", argf_readchar, 0); rb_define_singleton_method(argf, "tell", argf_tell, 0); - rb_define_singleton_method(argf, "seek", argf_seek, 2); + rb_define_singleton_method(argf, "seek", argf_seek, -1); rb_define_singleton_method(argf, "rewind", argf_rewind, 0); rb_define_singleton_method(argf, "pos", argf_tell, 0); rb_define_singleton_method(argf, "pos=", argf_set_pos, 1); diff --git a/lib/delegate.rb b/lib/delegate.rb index 480e1ef6b8..a72ea943ba 100644 --- a/lib/delegate.rb +++ b/lib/delegate.rb @@ -8,7 +8,7 @@ # Usage: # foo = Object.new # foo2 = SimpleDelegator.new(foo) -# foo.hash == foo2.hash # => true +# foo.hash == foo2.hash # => false # # Foo = DelegateClass(Array) # diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 4692ea73c1..eb3cb74e16 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -375,7 +375,7 @@ def create_makefile(target, srcdir = File.dirname($0)) $DLDFLAGS = CONFIG["DLDFLAGS"] $libs = CONFIG["LIBRUBYARG"] + " " + $libs - $configure_args['--enable-shared'] or $LIBPATH |= ["$(topdir)"] + $configure_args['--enable-shared'] or $LIBPATH |= [$topdir] $LIBPATH |= [CONFIG["libdir"]] defflag = '' diff --git a/parse.y b/parse.y index 1a64557f1a..29557aa90b 100644 --- a/parse.y +++ b/parse.y @@ -360,31 +360,21 @@ stmt : kALIAS fitem {lex_state = EXPR_FNAME;} fitem | stmt kWHILE_MOD expr { value_expr($3); - if ($1) { - if (nd_type($1) == NODE_BEGIN) { - $$ = NEW_WHILE(cond($3), $1->nd_body, 0); - } - else { - $$ = NEW_WHILE(cond($3), $1, 1); - } + if ($1 && nd_type($1) == NODE_BEGIN) { + $$ = NEW_WHILE(cond($3), $1->nd_body, 0); } else { - $$ = 0; + $$ = NEW_WHILE(cond($3), $1, 1); } } | stmt kUNTIL_MOD expr { value_expr($3); - if ($1) { - if (nd_type($1) == NODE_BEGIN) { - $$ = NEW_UNTIL(cond($3), $1->nd_body, 0); - } - else { - $$ = NEW_UNTIL(cond($3), $1, 1); - } + if ($1 && nd_type($1) == NODE_BEGIN) { + $$ = NEW_UNTIL(cond($3), $1->nd_body, 0); } else { - $$ = 0; + $$ = NEW_UNTIL(cond($3), $1, 1); } } | stmt kRESCUE_MOD stmt diff --git a/ruby.c b/ruby.c index cb716b4d7a..da1049533d 100644 --- a/ruby.c +++ b/ruby.c @@ -989,6 +989,7 @@ ruby_set_argv(argc, argv) if (origargv) dln_argv0 = origargv[0]; else dln_argv0 = argv[0]; #endif + rb_ary_clear(rb_argv); for (i=0; i < argc; i++) { rb_ary_push(rb_argv, rb_tainted_str_new2(argv[i])); }