Граф коммитов

725 Коммитов

Автор SHA1 Сообщение Дата
matz 8e9fbbf6d6 * eval.c (struct BLOCK): remove BLOCKTAG, use scope instead.
* eval.c (POP_TAG): no longer propagate retval.  retval is now set
  directly by localjump_destination().

* eval.c (localjump_destination): new function to cast
  return/break local jump.

* eval.c (rb_yield_0): stop TAG_RETURN/TAG_BREAK escaping.

* variable.c (rb_autoload_load): call const_missing if autoloading
  constant is not defined to allow hook.

* eval.c (rb_eval): use rb_const_get_from() instead of
  rb_const_get_at().

* eval.c (is_defined): forgot to check NODE_COLON3.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4462 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-30 00:04:02 +00:00
matz 22b955d9bf * eval.c (rb_eval): *a = [1,2] now assigns [[1,2]] to a.
consistent with *a = [1], which set [[1]] to a.

* node.h: merge NODE_RESTARY to NODE_SPLAT.

* parse.y: rules simplified a bit by removing NODE_RESTARY.

* sample/test.rb: updated for new assignment behavior.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4452 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-27 19:43:50 +00:00
matz 9942c6ed13 * file.c (rb_file_s_expand_path): avoid calling rb_scan_args() for
apparent cases. [ruby-talk:79748]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4439 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-23 17:06:55 +00:00
nobu 0124af9063 * eval.c (rb_eval, rb_iterate, block_pass): reduce PUSH/POP_TAG and
EXEC_TAG() for retry.  [ruby-dev:21216]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4430 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-23 07:00:02 +00:00
matz 46e1454dea * eval.c (rb_yield_splat): should check if "values" is array.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4428 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-23 04:05:42 +00:00
matz fc63eb3a77 * enum.c (each_with_index_i): typo.
* eval.c (rb_yield_splat): should call svalue_to_avalue() before
  calling rb_yield_0().


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4427 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-22 17:43:57 +00:00
matz dc0f677ef8 eval.c: typo
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4425 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-22 08:13:36 +00:00
matz 7ff7bcbf9d * enum.c (inject_i): use rb_yield_values.
* enum.c (each_with_index_i): ditto.

* eval.c (rb_yield_splat): new function to call "yield *values".

* string.c (rb_str_scan): use rb_yield_splat().


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4424 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-22 08:09:58 +00:00
nobu 5eafb6e10d * eval.c (block_pass): improve passing current block.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-21 16:00:34 +00:00
matz f3d25fdd9c * gc.c (id2ref): recycle check should be done by klass == 0.
[ruby-core:01408]

* eval.c (Init_Thread): Continuation#[] added.  [ruby-talk:79028]

* parse.y (mlhs_node): should allow "::Foo" (colon3) as lhs.

* parse.y (lhs): ditto.

* parse.y (yylex): should return tCOLON3 right after kCLASS.
  [ruby-talk:78918]

* error.c (exc_initialize): was converting argument to string too
  eagerly.  Only check was needed. [ruby-talk:78958]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4390 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-14 17:20:14 +00:00
matz c791dc1345 * eval.c (POP_BLOCK): turn on BLOCK_LEFT flag when leaving block.
* eval.c (proc_invoke): unpack return/break destination when block
  is already left.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4379 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-13 10:31:33 +00:00
matz 09590a73fa * eval.c (THREAD_SAVE_CONTEXT): should explicitly turn off the
flag before calling getcontext(2).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4370 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-11 18:18:40 +00:00
matz 0933db5a90 * eval.c (rb_thread_restore_context): typo.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4369 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-11 17:58:25 +00:00
matz 466c684881 * eval.c (struct thread): add member to save backing store on
IA64. (ruby-bugs PR1086)

* eval.c (thread_mark): mark IA64 backing store region.

* eval.c (thread_free): free saved IA64 backing store.

* eval.c (rb_thread_save_context): save IA64 backing store as well.

* eval.c (rb_thread_restore_context): restore IA64 backing store.

* eval.c (THREAD_ALLOC): initialize IA64 members.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4368 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-11 17:52:24 +00:00
matz 5256bca931 * eval.c (rb_call_super): do not use rb_block_given_p() for
check. [ruby-talk:78656]

* eval.c (BEGIN_CALLARGS): push ITER_NOT only when ITER_PRE.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4365 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-11 08:35:54 +00:00
matz 3d621a4c3d * eval.c (rb_f_at_exit): should not be called without a block.
block_given check added.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4348 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-07 04:09:56 +00:00
matz 697af8e54c * eval.c (rb_call0): forgot to pop ruby_class.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4347 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-06 21:54:46 +00:00
matz b51416e21f * eval.c (rb_call0): update ruby_class as well as ruby_cref.
(ruby-bugs-ja PR#540)

* eval.c (rb_yield_0): remove ruby_frame->cbase and unify to
  ruby_cref.  [ruby-talk:78141]

* eval.c: initialize /* OK */ variables by Qnil to stop warnings.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4346 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-06 21:50:06 +00:00
nobu 1ea78bb8ff * eval.c (rb_load): should preserve current source file/line.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4325 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-05 06:47:37 +00:00
matz 4aaa5493f9 * eval.c (method_proc): should specify YIELD_FUNC_SVALUE.
[ruby-dev:21107]

* marshal.c (w_object): should not call w_extended for USRMARSHAL
  dump. [ruby-dev:21106]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4314 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-04 05:28:50 +00:00
nobu 096f7a4c89 * eval.c (rb_call_super): should propagate previous block for
super call.  [ruby-talk:77884]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4305 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-03 14:56:54 +00:00
nobu 685082d06f * eval.c (call_trace_func): clear exception flag temporarily.
[ruby-dev:21090]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4302 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-03 10:25:32 +00:00
matz 2e9ba7e77b * eval.c (rb_yield_0): code clean up according to Nobu's patch.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4278 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-01 20:19:40 +00:00
matz cdacb127fc * class.c (rb_obj_singleton_methods): should not go up to
ancestors unless the recursive flag is set. [ruby-list:38007]

* hash.c (env_each_key): use env_keys to avoid environment modify
  on the fly.

* hash.c (env_each_value): use env_values for safety.

* hash.c (env_each): allocate environment array first.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4277 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-01 20:16:53 +00:00
nobu fd5bdcd21c * eval.c (rb_call_super): propagate previous block if a block is
given.  [ruby-talk:77577]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4257 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-01 04:45:19 +00:00
matz aa9ffb6c80 backoff eval.c 1.498
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4255 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-01 03:12:39 +00:00
matz 601354bd6b * eval.c (BEGIN_CALLARGS): should not always reset ruby_iter,
need to restore previous value. [ruby-talk:77577]

* array.c (rb_ary_fill): array length may be changed during the
  block execution. [ruby-talk:77579]

* array.c (rb_ary_zip): ditto.

* array.c (rb_ary_fill): ditto.

* hash.c (env_reject_bang): length may be changed during the block
  execution.

* hash.c (env_clear): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4254 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-01 02:52:21 +00:00
matz dea1baa169 * ext/stringio/stringio.c (strio_gets): only "gets" should set $_.
* ext/stringio/stringio.c (strio_getline): should not set $_ here.

* io.c (argf_to_s): argf.to_s returns "ARGF".

* io.c (set_defout_var, set_deferr_var): make $defout and $deferr
  obsolete.

* io.c (set_input_var, set_output_var): allow $stdin, $stdout,
  $stderr not to be instance of IO.

* io.c (rb_f_readline): forward method to current_file. gets,
  readline, readlines, getc, readchar, tell, seek, pos=, rewind,
  fileno, to_io, eof, each_line, each_byte, binmode, and closed?
  as well.

* io.c (argf_forward): utility function to forward method to
  current_file.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4190 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-28 07:31:52 +00:00
matz 34ca2ab058 * variable.c (rb_mod_const_missing): "const_missing" should not
appear in the caller(); add call frame adjustment.

* eval.c (rb_method_missing): simplify call frame adjustment.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4168 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-26 02:26:08 +00:00
matz 85911c410a * ext/socket/socket.c (tcp_s_gethostbyname): was using
uninitialized size_t value. [ruby-talk:76946]

* Minor cleanups.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4156 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-25 05:36:55 +00:00
matz 5dd2b7102c * gcc -Wall clean-up.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4151 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-24 18:33:50 +00:00
nobu 7896128822 * configure.in (AC_C_VOLATILE): check if volatile works.
* defines.h (volatile): removed.

* eval.c (rb_thread_group): Thread#group.  [new]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4144 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-24 07:05:28 +00:00
matz e02b469de1 * eval.c (thgroup_add): no warning for terminated threads.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4142 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-24 05:18:47 +00:00
matz 0d1df1cd7d * variable.c (rb_mod_const_missing): new method. [ruby-core:00441]
* variable.c (rb_const_get_at): allow "const_missing" hook.

* variable.c (rb_const_get_0): ditto.

* eval.c (method_missing): rename from rb_undefined to clarify.

* eval.c (ruby_finalize_0): update exit status if any of END proc
  raises SystemExit. [ruby-core:01256]

* eval.c (rb_exec_end_proc): reduce rb_protect().


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4116 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-22 08:42:47 +00:00
matz d675dbc279 * lib/xmlrpc: import.
* eval.c (thgroup_add): should return group for terminated thread
  case.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4102 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-19 10:05:54 +00:00
matz 5b7d908752 * eval.c (thgroup_add): typo again. sorry.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4099 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-19 03:23:05 +00:00
matz 91d6fe9a02 * eval.c (thgroup_add): typo.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4098 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-19 03:19:36 +00:00
matz adec8b726c * eval.c (thgroup_add): do not raise ThreadError on terminated
thread addition for compatibility.  just warning.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4097 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-19 03:18:44 +00:00
nobu d087821480 * eval.c (rb_attr): extra calls of method_added. [ruby-talk:76361]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4094 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-18 17:00:43 +00:00
matz 909c2274f9 * eval.c (rb_f_missing): VCALL is called only for LOCAL_ID. no
check required.

* parse.y (primary): pritmary:tFID generates NODE_FCALL.
  [ruby-dev:20641]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4085 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-18 05:29:46 +00:00
matz 8cee72d5c6 * eval.c (rb_clear_cache_by_class): check both klass and origin.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4083 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-17 08:58:16 +00:00
matz 46bf621737 * eval.c (ruby_init): set ruby_running to true after
initialization.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4080 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-17 05:23:54 +00:00
matz 0eb5a42b91 * eval.c (rb_proc_new): call svalue_to_avalue for yield argument.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4078 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-16 09:23:33 +00:00
matz 7406260aed * eval.c (rb_disable_super, rb_enable_super): deprecate.
* eval.c (thgroup_s_alloc): re-implement group struct.

* eval.c (thgroup_add): add check for enclose and frozen status.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4076 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-16 07:11:30 +00:00
nobu 0caa77e7bc * eval.c (rb_add_method, rb_alias): need to clear cache by
ID when method defined in parent class is cached for
  grand child classes.  [ruby-dev:20672]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4075 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-15 10:50:54 +00:00
nobu 30399f6c75 *** empty log message ***
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4065 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-11 19:23:13 +00:00
nobu b2ffc1fcab * eval.c (avalue_to_svalue): typo.
* eval.c (rb_load): rb_prohibit_interrupt should not underflow.

* parse.y (NODE_STRTERM, tokadd_string, parse_string): moved string
  nest level from a static variable to NODE_STRTERM.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4063 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-11 16:22:01 +00:00
eban d65dab3dfb * eval.c (rb_thread_schedule): parse error.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4053 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-10 03:08:08 +00:00
matz 662e3cf1f9 * eval.c (rb_load): put rb_load_file() in a thread critical
section. [ruby-dev:20490]

* eval.c (compile): put rb_compile_string() in a thread critical
  section.

* variable.c (rb_const_get_0): should not warn if constant is not
  defined. (ruby-bugs-ja PR#509)

* bignum.c (rb_big2dbl): give a warning on overflow.
  (ruby-bugs-ja PR#510)

* util.c (ruby_strtod): change MDMAXEXPT from 511 to 308.

* pack.c (utf8_to_uv): long is sufficient.  LONG_LONG is not
  required.

* bignum.c (rb_big2str): support 32 bit (without `long long' type)
  machines. (ruby-bugs-ja PR#512)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4050 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-09 22:28:42 +00:00
matz 3de67ca69d * eval.c (rb_call_super): k->super maybe NULL if klass is Kernel.
[ruby-dev:20519]

* gc.c (obj_free): clear method cache when freeing class/module.

* eval.c (rb_mod_remove_method): allow "remove_method" to accept
  multiple arguments.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4041 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-07 08:28:19 +00:00
matz 9ae79bfcb9 * node.h (NEW_NODE): cast arguments to rb_node_newnode().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4039 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-04 15:30:35 +00:00
matz 9d22a06ea0 * array.c (rb_values_at): extract common procedure from
rb_ary_values_at.  follow DRY principle.

* re.c (match_values_at): values_at should understand ranges.

* struct.c (rb_struct_values_at): ditto.

* struct.c (inspect_struct): inspect format changed; add "struct "
  at the top.

* sprintf.c (rb_f_sprintf): "%p" specifier for inspect output.
  (RCR#68)

* eval.c (rb_mod_undef_method): allow "undef_method" to accept
  multiple arguments. (RCR#146)

* lib/timeout.rb: put timeout in Timeout module. (RCR#121)
  [ruby-talk:61028]

* re.c (match_groups): new method added. (RCR#139)

* variable.c (rb_mod_const_of): should exclude constant defined
  in Object, unless retrieving constants of Object.

* string.c (rb_str_new4): do not allocate new string if original
  is frozen or already have copy-on-write entry. [ruby-talk:74940]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4031 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-03 11:02:53 +00:00
matz 447578a8a0 * string.c (rb_str_shared_replace): clear flags before copy.
* string.c (rb_str_replace): ditto.

* eval.c (rb_yield_0): override visibility mode for module_eval
  etc. (ruby-bugs-ja PR#505)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4028 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-02 04:27:29 +00:00
nobu 6e85f9c99c * eval.c (mnew): ignore metaclasses have no influence, for rklass.
[ruby-talk:74706]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4017 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-30 08:53:10 +00:00
nobu e5a9dcb9d8 * configure.in (rb_cv_stack_grow_dir): check stack growing direction.
* eval.c (rb_thread_restore_context): prior configuration macro.

* gc.c (ruby_stack_length): always return the address of lower edge.

* gc.c (rb_gc_mark_locations): remove margin.  [ruby-dev:20462]

* gc.c (rb_gc, Init_stack): prior configuration macro.

* gc.c (Init_stack): add safety margin.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4012 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-28 03:29:00 +00:00
nobu 5f80d051a6 * eval.c (rb_yield_0): show yielded block position not only yielding
point.  [ruby-dev:20441]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3996 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-24 08:59:34 +00:00
nobu 69459d98ef * dir.c (find_dirsep): get rid of warnings.
* eval.c (error_print): temporary value might be disposed by GC.

* hash.c (env_has_value, env_index): should not increment NULL.

* io.c (io_read, rb_io_sysread): not read when length is 0.

* io.c (rb_io_reopen): ensure initialized IO.

* io.c (rb_io_init_copy): sychronize file pointer.

* io.c (rb_io_s_pipe): make exception proof.

* string.c (rb_str_rindex_m): Fixnum 0 matched end of string.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3984 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-23 08:41:07 +00:00
matz 67dcad92b7 * string.c (rb_str_upto): generate sequence according to "succ"
order.  formerly check was done by dictionary order.
  [ruby-talk:74138]

* string.c (rb_string_value): fill constant empty string along
  with setting ELTS_SHARED if str->ptr is NULL. [ruby-core:01179]

* string.c (rb_string_value_ptr): ditto.

* string.c (rb_check_string_type): ditto.

* string.c (str_gsub): move END(0) check before mbclen2().

* string.c (scan_once): reduce END(0) check.

* io.c (rb_io_initialize): accept fixnum mode.

* eval.c (error_print): replace strchr() by memchr(), einfo may
  contain "\0".

* pack.c (pack_unpack): range check for "@" move; initialize check
  for "m".

* error.c (syserr_initialize): avoid buffer overflow.

* file.c (rb_file_s_readlink): expand buffer until readlink
  succeed.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3982 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-23 06:52:39 +00:00
matz 25e0ff2e4b * eval.c (proc_invoke): forgot "break";
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3977 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-21 17:15:53 +00:00
matz 47b57348e6 * eval.c (proc_invoke): should not propagate distination tag if
tag is already handled in this level. (ruby-bugs-ja PR#501)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-21 15:36:06 +00:00
matz 0347d29810 * eval.c (proc_invoke): should not propagate TAG_BREAK and
TAG_RETURN from orphan Proc object. [ruby-core:01148]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3969 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-20 17:22:27 +00:00
matz f289fddace * parse.y (new_yield): distinguish "yield 1,2" and "yield [1,2]".
[ruby-dev:20360]

* eval.c (rb_eval): support new_yield() change.

* variable.c (rb_const_get_0): warn for Foo::BAR when BAR is a
  toplevel constant (i.e. a constant defined under Object).
  [ruby-list:36935]

* parse.y (no_blockarg): separate no block argument check and
  ret_args argument processing.

* range.c (rb_range_beg_len): out_of_range check after adjusting
  end point. [ruby-dev:20370]

* parse.y (call_args): the first argument to arg_cancat() should
  be NODE_LIST. [ruby-core:01151]

* eval.c (rb_eval): should dispatch based on ID type.

* eval.c (rb_yield_0): should restore scope_vmode during yield.
  [ruby-dev:20361]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3967 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-20 07:11:44 +00:00
matz f7afa61a0a * eval.c: remove rb_cBlock.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-17 03:12:28 +00:00
nobu 401805ec13 * eval.c (proc_invoke): format the message for localjump_error().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3950 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-16 08:03:03 +00:00
matz 590a37880c * eval.c (proc_alloc): re-unification of Block and Proc. Block
class is no longer available.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3948 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-16 07:14:50 +00:00
matz d616f6005c * eval.c (method_arity): should handle NODE_BMETHOD and
NODE_DMETHOD. [ruby-core:01138]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3941 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-14 13:41:29 +00:00
matz 9481face42 * parse.y (value_expr0): class and module statements should not be
warned for "void value expression". [ruby-talk:72989]

* gc.c (add_final): should determine type by respond_to?

* gc.c (define_final): ditto.

* io.c (rb_io_ctl): should not depend on respond_to?

* range.c (range_step): rb_check_string_type().

* process.c (proc_setgroups): new functions.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3918 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-07 15:34:31 +00:00
nobu fb81dcb863 * eval.c (error_print): needs to be exception proof.
* eval.c (error_handle, rb_longjmp): bails out when exception
  reentered.  (ruby-bugs-ja:PR#487), [ruby-core:01119],
  [ruby-core:01122]

* eval.c (Init_Proc): pre-allocates critical error objects.

* parse.y (cmd_brace_block, do_block, brace_block): initialize block
  variables at the beginning of the block.  [ruby-talk:72521]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3916 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-06 11:29:20 +00:00
matz bad7546f15 * gc.c (define_final): eliminate rb_f_lambda() call.
* class.c (rb_scan_args): ditto.

* signal.c (sig_trap): ditto.

* hash.c (rb_hash_initialize): ditto.

* variable.c (rb_f_trace_var): ditto.

* ext/dl/dl.c (rb_dl_callback): ditto.

* ext/win32ole/win32ole.c (ev_on_event): ditto.

* eval.c (ruby_cleanup): $SAFE is turned off in the finalization.
  Each END proc should preserve its own $SAFE level. [ruby-core:01119]

* marshal.c (marshal_load): remove unused variable "hash".
  [ruby-core:01120]

* hash.c (env_str_new): freeze strings from ENV. [ruby-talk:72860]

* array.c (rb_ary_first): optional argument to retrieve first n
  elements.

* array.c (rb_ary_last): optional argument to retrieve last n
  elements.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3915 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-06 09:44:22 +00:00
matz 9e77e91a13 * eval.c (ruby_cleanup): $SAFE is turned off in the finalization.
Each END proc should preserve its own $SAFE level. [ruby-core:01119]

* marshal.c (marshal_load): remove unused variable "hash".
  [ruby-core:01120]

* hash.c (env_str_new): freeze strings from ENV. [ruby-talk:72860]

* array.c (rb_ary_first): optional argument to retrieve first n
  elements.

* array.c (rb_ary_last): optional argument to retrieve last n
  elements.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3914 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-06 09:24:59 +00:00
matz c004ecfa1e * math.c (math_erf,math_erfc): new function. [ruby-list:37753]
* eval.c (ruby_finalize): no longer need to turn off $DEBUG in the
  finalizer. (ruby-bugs-ja PR#473)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3907 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-05 06:40:42 +00:00
matz 45c7ea552d * eval.c (rb_call_super): should search superclass method based on
orig_func, not last_func.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3904 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-03 13:57:06 +00:00
matz 30f934d341 * eval.c (rb_call): typo.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3902 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-03 09:46:43 +00:00
matz c5fc4bca6d * eval.c (rb_call_super): inheritance line adjustment moved from
rb_call(). [ruby-core:01113]

* eval.c (rb_eval): use rb_call_super() to follow DRY principle.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3901 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-03 09:40:21 +00:00
matz 6125313d69 * array.c (push_values_at): Array#values_at should work with
ranges too.

* range.c (rb_range_beg_len): length calculation was wrong.

* eval.c (rb_call): should set T_ICLASS in the frame->last_class.
  [ruby-core:01110]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3899 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-02 04:49:46 +00:00
matz 979f006b9e * io.c (rb_f_syscall): type dispatch should be based on
rb_check_string_type(), not FIXNUM_P(), because values may be a
  bignum.  [ruby-talk:72257]

* eval.c (rb_call0): should pass the current klass value to
  block_invoke, which may be called via "super". [ruby-core:01077]

* eval.c (block_invoke): now takes 4th argument "klass".

* eval.c (block_alloc): should propagate BLOCK_PROC to
  ruby_block.

* marshal.c (r_object0): should not use "yield" method, use "call"
  instead. (ruby-bugs-ja PR#476)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3886 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-30 16:08:03 +00:00
nobu 7d9628ef02 * eval.c (rb_Array): exclude Kernel#to_a instead of Object#to_a.
(ruby-bugs-ja:PR#483)

* lib/optparse.rb (OptionParser::Switch#parse_arg): not splat.

* lib/optparse.rb (OptionParser::Switch#conv_arg): splat if no
  conversion supplied.

* lib/optparse.rb (OptionParser::Switch::PlacedArgument#parse):
  override next switch after argument conversion.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3884 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-30 05:55:50 +00:00
nobu 5ddce4f7bc * eval.c (ev_const_defined, ev_const_get), variable.c
(rb_const_get_at, rb_const_get, rb_mod_remove_const): use Qundef
  as autoload marker.  [ruby-dev:18103], [ruby-dev:18184]

* eval.c (rb_mod_autoload, rb_mod_autoload_p): new method;
  Module#autoload, Module#autoload?.

* variable.c (rb_autoload, rb_autoload_load, rb_autoload_p):
  manage autoload constants per classes/modules.

* variable.c (rb_const_defined_at, rb_const_defined): return false
  for autoloading constants.

* class.c (rb_define_class, rb_define_module), eval.c (rb_eval),
  variable.c (rb_mod_const_at, rb_const_assign): removed autoload
  stuff.

* intern.h: prototypes; rb_autoload, rb_autoload_load,
  rb_autoload_p.

* lib/optparse.rb (OptionParser::Switch::PlacedArgument::parse):
  do not treat unmatched argument as an option.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3874 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-29 00:11:11 +00:00
nobu dc2bab2207 * eval.c, util.c: removed duplicated includes/defines.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3872 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-27 11:33:46 +00:00
matz b4fd4d6018 * eval.c (Init_Proc): Block/Proc separation. [huge change]
* eval.c (block_arity): returns exact arity number for Procs out
  of methods. also gives 1 for {|a|..}.

* string.c (rb_str_match): revert use of String#index for
  invocation like string =~ string.

* eval.c (rb_Array): move Object#to_a exclusion hack from
  splat_value().  need to be in eval.c for a while.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3867 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-26 08:22:33 +00:00
nobu 8a82c68e5b * eval.c (rb_longjmp): wrong jump.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3861 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-23 09:39:13 +00:00
nobu 0cc87df01c * eval.c (rb_longjmp): get rid of reentering while debug warning.
(ruby-bugs-ja:PR473)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3860 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-23 09:34:09 +00:00
matz cec20793cb * eval.c (ruby_finalize): turn off ruby_debug flag before calling
at_exit procs and finalizers. (ruby-bugs-ja:PR473)

* ext/tcltklib/tcltklib.c (lib_mainloop_core): OK to block if
  there's no other thread. (ruby-bugs:PR#861)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3859 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-23 08:11:21 +00:00
matz df62bb4fc9 * eval.c (rb_define_alloc_func): need not to disable
rb_call_super() for allocation functions. [ruby-core:1065]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3852 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-22 07:45:53 +00:00
nobu d547df4c53 * eval.c (rb_eval): splat NODE_RESTARY. [ruby-dev:20268]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3845 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-21 17:46:42 +00:00
nobu 874eca3c04 * eval.c (rb_thread_fd_close): raise for writing threads.
[ruby-dev:20269]

* io.c (rb_io_close, io_reopen): ditto.

* io.c (io_reopen): keep stdio objects for stdin, stdout,
  and stderr.  [ruby-dev:19442]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3844 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-21 17:42:56 +00:00
matz 062351e6bb * error.c (syserr_initialize): prohibit specifying errno for
subclasses of SystemCallError.  in addition, if initialize is
  called for SystenCallError instance, its class be changed.
  [ruby-dev:20257]

* gc.c (run_final): to protect thread context switch, finalizers
  are wrapped in DEFER_INTS/ENABLE_INTS.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3839 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-21 08:48:05 +00:00
matz bec6d3b1b9 * eval.c (rb_thread_save_context): prohibit rb_gc_force_recycle()
on thread saved ruby_dyna_vars. [ruby-dev:20236]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3837 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-20 10:02:06 +00:00
matz 82cf98939f * eval.c (rb_yield_0): give warning for multiple values for a
block parameter.

* eval.c (rb_yield_values): a function to yield multiple values.

* array.c (sort_1): use rb_yield_values.

* enum.c (min_ii, max_ii): ditto.

* hash.c (rb_hash_update_block_i, delete_if_i, select_i,
  each_pair_i, env_each, env_reject_bang, env_select,
  env_update_i): ditto.

* struct.c (rb_struct_each_pair): ditto.

* eval.c (top_include): should include module in the current self,
  not ruby_top_self. [ruby-dev:20198]

* eval.c (top_include): stop inclusion to ruby_wrapper; give
  warning.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3833 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-20 06:29:23 +00:00
nobu 7f425b216b * eval.c (rb_f_missing): create exception instance by ordinal
method.

* error.c (rb_name_error, rb_sys_fail): ditto.

* error.c (exc_to_s, exit_status, name_err_name,
  nometh_err_args, syserr_errno, syserr_eqq): access
  attributes.

* error.c (name_err_initialize, nometh_err_initialize,
  syserr_initialize): initialize attributes.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3831 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-20 01:51:32 +00:00
matz 7e35911e10 * ext/pty/pty.c (pty_finalize_syswait): join (using Thread#value)
before detach pid. [ruby-talk:71519]

* eval.c (PUSH_FRAME): save outer ruby_block. [ruby-list:37677],
  [ruby-dev:20202]

* eval.c (BEGIN_CALLARGS): restore outer block by using
  ruby_block->outer.

* eval.c (block_pass): do not alter block->prev, but block->outer.

* array.c (get_inspect_tbl): warning on wrong condition.

* eval.c (localjump_xvalue): renamed exitstatus to exit_value
  since it's not exit "status" after all.

* eval.c (localjump_error): add reason to LocalJumpError.

* compar.c (rb_cmpint): raise error via rb_cmperr(), if cmp value
  is nil. now take new 2 arguments.

* time.c (time_cmp): 2003-05-16 fix was incomplete.
  (ruby-bugs-ja:PR#458)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3823 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-19 15:45:46 +00:00
matz 6e52d10fe6 * object.c (init_copy): rename copy_object as initialize_copy,
since it works as copy constructor.

* eval.c (rb_add_method): initialize_copy should always be
  private, like initialize.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3820 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-19 05:41:08 +00:00
matz f4ff7ccddf * array.c (get_inspect_tbl): check whether inspect_tbl value is a
valid array. (ruby-bugs-ja PR#65)

* array.c (inspect_ensure,rb_protect_inspect,rb_inspecting_p):
  use get_inspect_tbl().

* eval.c (rb_f_abort): call exit(1) if exception is raised.  This
  patch was made by Nobuyoshi Nakada <nobu.nokada@softhome.net> on
  2002-05-30.  (ruby-bugs-ja PR#236)

* signal.c: disable Ruby's interrupt handler at the beginning.
  (ruby-bugs-ja PR#236)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3817 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-19 04:52:55 +00:00
matz 6cbcafb9b9 * eval.c (block_pass): chain previous block to the pushing block.
* time.c (time_cmp): does not compare with numbers for
  interchangeability. (ruby-bugs-ja PR#458)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3808 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-16 05:13:17 +00:00
matz 5e8a9873a2 * eval.c (error_pos): use $deferr for output instead of stderr
directly.

* eval.c (error_print,error_handle,rb_longjmp,rb_thread_schedule):
  ditto.

* io.c (Init_IO): new variable $deferr which is default output
  port of error messages.

* io.c (rb_warn_m): new method "warn". [new]

* error.c (warn_print): use $deferr.

* error.c (rb_bug): ditto.

* error.c (err_append): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3782 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-13 05:53:08 +00:00
matz 776e2693e7 * string.c (rb_str_ljust): now takes optional argument to specify
pad string. [ruby-talk:70482]

* string.c (rb_str_rjust): ditto.

* string.c (rb_str_center): ditto.

* string.c (rb_str_justify): utility function.

* eval.c (rb_add_method): call singleton_method_added or
  method_added for every method definition (after ruby_running).
  [ruby-talk:70471]

* array.c (rb_ary_reverse_bang): Array#reverse! should not return
  nil even for arrays sized less than 2.

* io.c (argf_eof): should not block after reading all argument
  files. (ruby-bugs-ja PR#449)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3742 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-05-02 06:41:33 +00:00
matz a268f439f2 * eval.c (splat_value): split splat_value() and avalue_splat().
* io.c: there's no way to set non-IO value to current_file, thus
  no need for argf_forward().


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3730 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-04-25 09:20:51 +00:00
matz d47be39735 * eval.c (proc_invoke): Proc#yield should pass through retry and
break like keyword yield. [ruby-talk:70034]

* eval.c (proc_invoke): orphan Proc now raises LocalJumpError for
  break and retry again.

* eval.c (rb_eval): ARGSCAT should splat the argument.

* eval.c (splat_value): splat operation function.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3729 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-04-25 08:54:52 +00:00
matz e74149056b * variable.c (rb_mod_name): always return empty string for
anonymous class/module.  (ruby-bugs-ja PR#424)

* config.sub: stop forcing addition of -gnu to -linux.

* variable.c (classname): refactoring.

* variable.c (rb_class_path): __tmp__classpath__ handling moved
  from classname().


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3664 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-04-10 08:37:12 +00:00
nobu ae6b9ced18 * eval.c (rb_obj_is_method): indefinite return value.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-04-09 16:52:28 +00:00
matz 8e09f5b907 * variable.c (rb_obj_remove_instance_variable): better message.
[ruby-talk:68987]

* variable.c (rb_mod_remove_const): ditto.

* object.c (rb_obj_ivar_get): ditto.

* object.c (rb_obj_ivar_set): ditto.

* parse.y (yylex): ditto.

* eval.c (rb_mod_define_method): Allow UnboundMethod as
  parameter.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3658 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-04-09 15:06:57 +00:00
matz 5cb4133e67 * bignum.c (BIGZEROP): macro to determine if x is a bignum zero.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-04-09 06:44:34 +00:00
matz ed0b577108 * eval.c (Init_Proc): make Method and UnboundMethod independent.
They are like instance and its class. [ruby-core:00941]

* parse.y (yylex): disallow global variables like "$1ve".
  [ruby-core:00945]

* marshal.c (marshal_dump): Marshal.dump(0, false) should cause an
  error. (ruby-bugs-ja PR#421)

* regex.c (re_compile_pattern): warn if '-' is the edge of
  character range.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3648 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-04-08 05:40:29 +00:00
matz e11f6de3c5 * ext/socket/socket.c (sock_s_unpack_sockaddr_in): remove struct
size check.  getnameinfo(3) can handle. [ruby-dev:19967]

* io.c (io_read): do not call rb_sys_fail() when required data
  length is zero. (ruby-bugs-ja PR#420)

* eval.c (umethod_proc): should raise TypeError, instead of
  returning error causing Proc.  Following the principle of "fail
  early".  [ruby-core:00927]

* pack.c (pack_pack): small but serious typo.

* eval.c (backtrace): skip internal allocator frame.
  (ruby-bugs-ja PR#416)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3646 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-04-07 06:58:31 +00:00
matz 79557dcbb0 * eval.c (assign): should prepare mrhs by svalue_to_mrhs().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3642 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-04-04 05:12:19 +00:00
matz c94187bce0 * eval.c (rb_f_missing): use "inspect" for T_OBJECT as well.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3640 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-04-03 05:25:00 +00:00
matz fec60bc7c4 * eval.c (avalue_to_svalue): use rb_check_array_type() again.
Clarify how "to_ary" and "to_a" work. [ruby-talk:68155]

* eval.c (svalue_to_avalue): ditto.

* eval.c (svalue_to_mrhs): ditto.

* eval.c (rb_eval): unary splat to use to_a, but we need a hack to
  exclude Object#to_a until it's removed.

* object.c (rb_Array): check obj.respond_to?("to_a").  Currently
  all object respond_to "to_a", but Object#to_a will be removed.

* range.c (Init_Range): undefine to_ary.

* re.c (Init_Regexp): ditto.

* regex.c (re_compile_pattern): do not warn if "-" is at the top
  or last of character class.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3633 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-03-29 02:56:18 +00:00
matz e9b5878c41 * eval.c (avalue_splat): new function to do unary * (splat)
operator.

* eval.c (avalue_to_svalue,svalue_to_avalue,svalue_to_mrhs): do
  not use implicit "to_ary" conversion.

* ext/curses/curses.c (GetWINDOW,GetMOUSE): add taint check.

* ext/curses/curses.c (curses_init_screen): ditto.

* ext/curses/curses.c (window_initialize): ditto.

* gc.c (os_each_obj): prohibit ObjectSpace#each_object in safe
  mode ($SAFE >= 4).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3616 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-03-26 07:01:14 +00:00
matz 0cd7c01c6a * eval.c (rb_yield_0): call avalue_to_mrhs() to assign block
parameter |a|. [ruby-dev:19897]

* ruby.c (ruby_set_argv): freeze argument strings.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3612 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-03-25 08:26:08 +00:00
matz d4db9e9c60 * io.c (rb_io_initialize): should check rb_secure(4).
* dir.c (dir_s_getwd): should check rb_secure(4).

* object.c (rb_obj_infect): function version of OBJ_INFECT().

* eval.c (rb_secure_update): new function to check object update.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3611 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-03-25 03:11:27 +00:00
matz ece972717b security enhancement of dl library (need test).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3609 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-03-24 09:38:37 +00:00
matz 1714176963 * regex.c (re_compile_pattern): give warning for unescaped square
brackets and minus in character class. [ruby-dev:19868]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3593 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-03-21 14:37:32 +00:00
nobu dfb2c7aa14 * eval.c (bmcall): missing type.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3592 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-03-21 09:12:25 +00:00
matz 85dd7bb0ef * eval.c (load_dyna): clear ruby_errinfo. (ruby-bugs-ja PR#409)
* io.c (read_all): make str empty if given. (ruby-bugs-ja PR#408)

* io.c (io_read): ditto.

* io.c (rb_io_sysread): ditto.

* range.c: do not override min and max.

* sprintf.c (remove_sign_bits): octal left most digit for negative
  numbers may be '3'. (ruby-bugs-ja PR#407)

* sprintf.c (rb_f_sprintf): should prefix sign bits if bignum is
  negative, using sign_bits().

* eval.c (avalue_to_mrhs): split argument passing and assignment
  conversion.

* eval.c (svalue_to_mrhs): ditto.

* eval.c (avalue_to_svalue): avalue_to_svalue([[1,2]]) should be
  [[1,2]], not [1,2] to wrap-around.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3584 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-03-20 06:27:22 +00:00
akr 5782e5b000 * eval.c (bmcall): add volatile to avoid GC problem.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3583 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-03-20 01:48:42 +00:00
matz 2abf664151 * eval.c (massign): remove unnecessary array unpacking; it should
be handled before massign() by svalue_to_mrhs().

* eval.c (svalue_to_mrhs): '*a = v' value conversion to avalue
  (i.e. [1] => [[1]], [1,2] => [1,2]).

* eval.c (rb_eval): use svalue_to_mrhs.

* eval.c (rb_yield_0): ditto.

* eval.c (proc_invoke): break from "Proc#yield" is legal.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3573 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-03-10 23:03:06 +00:00
matz bb544954b2 * file.c (rb_find_file): need world writable directory check for
relative paths too.

* file.c (rb_find_file): world writable directory check if
  $SAFE >= 1 (was $SAFE >= 2).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3571 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-03-10 15:05:18 +00:00
nobu e4f5562f17 * eval.c (massign): fix a bug not to expand in assigment to sole
lhs.  [ruby-dev:19766]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3565 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-03-08 02:31:02 +00:00
matz 9d77639f30 * parse.y (dsym): :"symbol string" style should not contain `\0'.
* process.c (proc_detach): new method Proc#detach(pid) which
  create background watcher thread to issue waitpid. [new]

* process.c (rb_detach_process): utility function to detach
  process from C code.

* ext/pty/pty.c (pty_finalize_syswait): terminate watcher thread,
  and detach child process (by creating new idle waitpid watcher
  thread).

* ext/pty/pty.c (pty_syswait): may lost signal stopped child.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3561 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-03-07 05:59:42 +00:00
matz e5c5576aeb * string.c (str_new): need no MEMZERO().
* numeric.c (fix_gt): use rb_num_coerce_cmp() instead of
  rb_num_coerce_bin.

* numeric.c (fix_ge, fix_lt, fix_le): ditto.

* numeric.c (flo_gt, flo_ge, flo_lt, flo_le): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3536 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-02-27 08:04:32 +00:00
eban 5527d3ae59 * eval.c (rb_f_require): do not need to abort if a DLEXT file
is not found.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3522 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-02-21 08:25:18 +00:00
matz 8fc299e8bc * eval.c (rb_thread_remove): back outt changes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3520 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-02-21 03:33:29 +00:00
matz 2cd6d0f597 * eval.c (rb_thread_remove): thread may die in the process of
rb_thread_die().  this change was suggested by Rudi Cilibrasi
  <cilibrar@drachma.ugcs.caltech.edu>.

* eval.c (rb_thread_start_0): main thread swapped by fork() may
  terminate rb_thread_start_0() successfully. call ruby_stop(0);
  this change too was suggested by Rudi.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3514 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-02-20 10:09:31 +00:00
nobu 2e13a4ff37 *** empty log message ***
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3510 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-02-20 06:23:39 +00:00
matz d88376b135 * parse.y (clhs): allow "Foo::Bar = x".
* parse.y (primary): "self[n]=x" can be legal even when "[]=" is
  private.  changes submitted in [ruby-talk:63982]

* parse.y (aryset): ditto.

* parse.y (attrset): "self.foo=x" can be legal even when "foo="
  is private.

* eval.c (is_defined): private "[]=" and "foo=" support.

* eval.c (rb_eval): ditto.

* eval.c (assign): ditto.

* eval.c (rb_eval): "foo=" should not always be public.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-02-20 03:35:44 +00:00
nobu afca4f0cfd * eval.c (rb_thread_restore_context): inhibit interrupts in
critical section while context switching.  [ruby-talk:64785]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3508 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-02-19 16:27:47 +00:00
nobu 884efe7c5e * node.h (nd_cpath): nested class/module declaration.
[EXPREIMENTAL]

* eval.c (rb_eval): ditto.

* gc.c (rb_gc_mark_children): ditto.

* parse.y (cpath): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3506 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-02-19 09:27:49 +00:00
matz ddd9d609dc * eval.c (rb_call0): should not report uninitialized warning by
attribute reader method.

* variable.c (rb_attr_get): new function to get instance variable
  without uninitialized warning.

* io.c (argf_to_io): should prefetch argv.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-02-18 14:30:17 +00:00
nobu 246800d42b *** empty log message ***
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3493 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-02-13 09:58:57 +00:00
matz 937092b820 * range.c (range_step): step might be float 0 < x < 1.
* eval.c (rb_thread_schedule): pause if no runnable thread when
  there's only one thread.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3492 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-02-13 09:11:11 +00:00
nobu 168f2f470f * eval.c (rb_thread_schedule): current thread may be dead when
deadlock.  (ruby-bugs:PR#588)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3488 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-02-12 16:30:13 +00:00
matz ab24be4e98 * array.c (rb_ary_to_a): return value should be an Array if the
receiver is an instance of subclass of Array.

* string.c (rb_str_to_s): return value should be a String if the
  receiver is an instance of subclass of String.

* eval.c (rb_call): calls method_missing when superclass method
  does not exist.

* eval.c (rb_f_missing): now handles "no super" case.

* object.c (rb_obj_ivar_get): Object#instance_variable_get: new
  method to get instance variable value without eval(). [new]

* object.c (rb_obj_ivar_set): Object#instance_variable_set: new
  method to set instance variable value without eval(). [new]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3473 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-02-10 09:40:13 +00:00
nobu b89cbf192b * eval.c (proc_invoke): should propagate self to super
methods.  [ruby-dev:19510]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3454 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-02-07 06:30:18 +00:00
matz 0c90036fd1 * re.c (rb_memsearch): algolithm body of String#index.
* error.c (Init_Exception): "to_str" removed.

* eval.c (eval): should not rely on Exception#to_str

* eval.c (compile_error): ditto.

* error.c (err_append): ditto.

* hash.c (rb_hash_merge): Hash#merge, non destructive "update".
  now there's also Hash#merge! which is an alias to "update".


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3431 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-02-03 05:34:16 +00:00
matz 74d5623029 * variable.c (rb_obj_classname): new function.
* string.c (rb_str_dup): should preserve original's class (but not
  hidden singleton class).

* string.c (rb_str_substr): ditto.

* parse.y: backout EXPR_CMDARG removal.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3427 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-31 04:00:17 +00:00
matz 333eb8380f * eval.c (rb_eval): do not warn discarding already undefined
method.

* lib/rational.rb: undef quo before replacing.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3403 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-23 08:27:06 +00:00
michal a443067ba2 Exchange do { } while (0) for ((void)0)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3388 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-21 13:52:21 +00:00
nobu 79847e0b36 * eval.c (rb_f_require): purge too many goto's.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3369 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-20 09:22:45 +00:00
michal 4e13d36561 -Wall cleanups (removed unused vars, no 'code has no effect' warnings)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3346 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-16 07:38:40 +00:00
michal 9df466b287 Updated Copyrights of Matz to 2003.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3345 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-16 07:34:03 +00:00
matz a973f9698f * enum.c (enum_all): now works without block.
* enum.c (enum_any): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3344 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-15 08:07:41 +00:00
nobu 17bb511df2 * eval.c (rb_f_require): do not search adding .rb/.so suffixes if
the suffix specifiched.  [ruby-dev:18702]
  http://moonrock.jp/~don/d/200211.html#d08_t1


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3341 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-14 12:56:34 +00:00
matz 6e1f15fc8b * parse.y (list_append): avoid O(n) search using node->nd_next->nd_end.
* parse.y (list_append): ditto.

* eval.c (rb_eval): NODE_ARRY nd_end adoption.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3340 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-14 07:45:19 +00:00
matz 639ec76858 * eval.c (rb_eval): should not discard nested NODE_BLOCK.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3316 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-09 07:33:27 +00:00
matz dadb16d894 * parse.y (stmt): NODE_NOT elimitation for if/unless/while/until node.
* parse.y (primary): ditto.

* eval.c (rb_eval): reduce recursive rb_eval() call by using sort
  of continuation passing style.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3314 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-09 06:16:43 +00:00
matz 9796a9bc1c * eval.c: remove ruby_last_node and assignments seems to be
unnecessary

* intern.h: debug does not run if ID_ALLOCATOR is zero.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3310 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-08 06:59:38 +00:00
matz 17065d47a6 * range.c (range_each): treat fixnums specially to boost.
* numeric.c (num_step): remove rb_scan_args() for small speedup.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3309 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-08 06:05:08 +00:00
matz a89ac45548 * eval.c (svalue_to_avalue): should return converted array.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3308 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-07 08:56:51 +00:00
matz 6d481a4ae4 * hash.c (env_clear): new Hash compatible method.
* hash.c (env_shift): ditto.

* hash.c (env_invert): ditto.

* hash.c (env_replace): ditto.

* hash.c (env_update): ditto.

* array.c (rb_ary_join): dispatch based on "to_str".

* array.c (rb_ary_times): ditto.

* array.c (rb_ary_equal): ditto.

* process.c (rb_f_exec): dispatch based on "to_ary".

* eval.c (umethod_bind): exact class match is not required.  relax
  the restriction to subclasses.

* eval.c (rb_eval): call "inherited" before executing class body.

* class.c (rb_define_class): call "inherited" after defining the
  constant.

* class.c (rb_define_class_under): ditto.

* eval.c (massign): expand first element if RHS is an array and
  its size is 1, and LHS has concrete assignment target (i.e. LHS
  has target(s) other than *var).

* eval.c (massign): avoid unnecessary avalue/svalue conversion.

* eval.c (rb_yield_0): ditto

* array.c (rb_ary_update): do not allocate unused array if rpl is
  nil (i.e. merely removing elements).

* io.c (io_read): should resize supplied string if it's shorter
  than expected.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-07 07:36:40 +00:00
nobu 520416fdc5 * eval.c (rb_f_local_variables): skip $_, $~ and flip states in
dynamic variables.  [ruby-core:00681]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3305 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-06 22:50:18 +00:00
knu 91b9d37a85 * st.h, st.c: Introduce new conventional typedef's, st_data_t,
st_compare_func_t, st_hash_func_t and st_each_func_t.

* st.h, st.c: Do explicit function declarations and do not rely on
  implicit declarations.  On such platforms as IA64, int argument
  values are NOT automatically promoted to long (64bit) values, so
  explicit declarations are mandatory for those functions that
  take long values or pointers.  This fixes miniruby's coredump on
  FreeBSD/IA64.

* class.c, eval.c, gc.c, hash.c, marshal.c, parse.y, variable.c:
  Add proper casts to avoid warnings.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3303 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-06 15:55:43 +00:00
knu 50e62191ec * defines.h (FLUSH_REGISTER_WINDOWS): Make the flushw call an
inline function instead so it can be used as an expression.

* eval.c (EXEC_TAG, THREAD_SAVE_CONTEXT): Consistently call
  FLUSH_REGISTER_WINDOWS before calling setjmp(). (I suspect that
  every setjmp() implementation should take care of register
  windows, though)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3285 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-04 18:48:24 +00:00
nobu ed506c07d1 * eval.c (bmcall): arguments should be an array.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3275 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-02 02:01:25 +00:00
matz 0082edfd3d * eval.c (massign): removed awkward conversion between yvalue,
mvalue, etc.

* eval.c (rb_yield_0): new parameter added to tell whether val is
  an array value or not.

* parse.y (yield_args): restructuring: new nodes: NODE_RESTARY2,
  NODE_SVALUE; removed node: NODE_RESTARGS.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3269 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-01-01 03:24:29 +00:00
nobu 05b990b7c1 * gc.c (gc_sweep): adjust GC trigger.
* dln.c (init_funcname_len): get rid of gcc-3 -O3 warning.

* eval.c (copy_node_scope): ditto.

* hash.c (rb_hash_foreach, delete_if_i, select_i, each_value_i,
  each_key_i, each_pair_i, envix): ditto.

* range.c (range_each_func): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-12-29 14:51:22 +00:00
matz ee9d5d41d1 021224
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3207 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-12-24 08:53:56 +00:00
matz e274c3ab76 * class.c (ins_methods_i): should not show ID_ALLOCATOR.
* class.c (ins_methods_prot_i): ditto.

* class.c (ins_methods_priv_i): ditto.

* class.c (ins_methods_pub_i): ditto.

* eval.c (call_trace_func): ditto.

* eval.c (rb_undefined): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3204 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-12-24 08:02:00 +00:00
usa b469f3155a * array.c (ary_alloc), dir.c (dir_s_alloc), eval.c (thgroup_s_alloc),
file.c (rb_stat_s_alloc), hash.c (hash_alloc), io.c (io_alloc),
  object.c (rb_module_s_alloc, rb_class_allocate_instance),
  re.c (match_alloc, rb_reg_s_alloc), string.c (str_alloc),
  time.c (time_s_alloc), ext/digest/digest.c (rb_digest_base_alloc),
  ext/tcltklib/tcltklib.c (ip_alloc),
  ext/win32ole/win32ole.c (fole_s_allocate, fev_s_allocate)
  : add prototype to get rid of VC++ warnings.

* ext/sdbm/init.c (fsdbm_alloc): allocator takes only one argument.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3197 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-12-21 18:02:01 +00:00
matz bc49bc7c6b * parse.y (do_block): split "do" block and tLBRACE_ARG block.
* parse.y (cmd_brace_block): new tLBRACE_ARG block rule

* parse.y (command): can take optional cmd_brace_block; use %prec
  to resolve shift/reduce conflict. (ruby-bugs-ja PR#372)

* eval.c (ruby_finalize): trace_func should be cleared here (after
  executing exit procs and finalizers).

* eval.c (rb_define_alloc_func): new allocation framework, based
  on Nobu's work [ruby-dev:19116].  "allocate" method is no longer
  used for object allocation.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3188 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-12-20 08:33:17 +00:00
nobu cf5ecdfcbb * eval.c (assign): avoid SEGV at multiple attribute assignment.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3172 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-12-19 13:38:47 +00:00
matz baa00aa250 * numeric.c (num_step): use DBL_EPSILON.
* array.c (rb_check_array_type): new function: return an array
  (convert if possible), or nil.

* string.c (rb_check_string_type): new function: return a string
  (convert if possible), or nil.

* numeric.c (rb_dbl_cmp): returns nil if values are not
  comparable.

* numeric.c (fix_cmp,flo_cmp): use rb_num_coerce_cmp()

* bignum.c (rb_big_cmp): ditto.

* numeric.c (rb_num_coerce_cmp): new coercing function for "<=>",
  which does not raise TypeError.

* numeric.c (do_coerce): can be supress exception now.

* object.c (rb_mod_cmp): should return nil for non class/module
  objects.

* re.c (rb_reg_eqq): return false if the argument is not a
  string.  now returns boolean value.

* class.c (rb_include_module): argument should be T_MODULE, not
  T_class, nor T_ICLASS.

* eval.c (is_defined): "defined?" should return "assignment" for
  attribute assignment (e.g. a.foo=b) and indexed assignment
  (e.g. a[2] = 44).

* parse.y (aryset): use NODE_ATTRASGN.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3169 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-12-19 09:20:20 +00:00
nobu dd8a919a00 * eval.c (is_defined): NODE_ATTRASGN should be assignment.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3162 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-12-17 10:54:41 +00:00
nobu 86db656415 * node.h (NODE_ATTRASGN): new node, assignment to attribute.
[ruby-core:00637].

* eval.c (is_defined, rb_eval): ditto.

* parse.y (attrset, node_assign): ditto.

* string.c (rb_str_substr): tail sharing.  [ruby-core:00650]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3160 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-12-17 10:34:30 +00:00
uema2 b19e36a214 * configure.in, defines.h, dir.c, dir.h, dln.c, error.c,
eval.c, file.c, hash.c, io.c, main.c, missing.c,
      process.c, ruby.c, rubysig.h, signal.c, st.c, util.c, util.h,
      bcc/Makefile.sub, win32/Makefile.sub, win32/win32.h,
      ext/Win32API/Win32API.c, ext/socket/getaddrinfo.c,
      ext/socket/getnameinfo.c, ext/socket/socket.c,
      ext/tcltklib/stubs.c
      : replace "NT" with "_WIN32", add DOSISH_DRIVE_LETTER
* wince/exe.mak : delete \r at the end of lines.
* wince/mswince-ruby17.def : delete rb_obj_become


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3148 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-12-15 03:18:08 +00:00
matz 60b2446bea * sprintf.c (rb_f_sprintf): preceding ".." for negative numbers
still left;  removed.

* sprintf.c (rb_f_sprintf): should not prepend '0' if width > prec
  for example "%5.3d".

* process.c (Init_process): add Process.exit and Process.abort

* pack.c (utf8_to_uv): raise ArgumentError for malformed/redundant
  UTF-8 sequences.

* process.c (last_status_set): add pid attribute to Process::Status.

* pack.c (uv_to_utf8): limit maximum length of the encoded string
  to 6 bytes, even when the platform supports 8 bytes long integers.

* pack.c (utf8_to_uv): do not decode sequences longer than 6 bytes.

* object.c (copy_object): use "copy_object" method, not "become".


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3123 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-12-10 06:23:44 +00:00
nobu df8833203e * eval.c (mnew): original class of method defined in module should
be the module not intermediate class.  [ruby-dev:19040]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3121 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-12-10 06:19:21 +00:00
matz 90c4dae08f WinCE patch merged
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3106 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-12-02 07:57:17 +00:00
nobu 5bf245eeb9 * error.c (exit_initialize): add SystemExit#initialize to set
instance variable status.  (ruby-bugs-ja:PR#362)
  Now accepts status as optional first argument.

* eval.c (error_handle): now SystemExit have status always.

* eval.c (system_exit): just instantiate SystemExit without raise.

* eval.c (rb_thread_start_0): initialize SystemExit properly.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3087 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-11-26 22:32:11 +00:00
matz f047de71e6 * eval.c (rb_add_method): node may be NULL.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3077 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-11-22 09:32:50 +00:00
matz e2d384d628 * file.c (rb_find_file_ext): should not terminate searching with
empty path, just ignore.

* dir.c: remove <sys/parm.h> inclusion.

* compar.c (cmp_eq,cmp_gt,cmp_ge,cmp_lt,cmp_le): check using
  rb_cmpint().

* error.c (init_syserr): remove sys_nerr dependency.

* numeric.c (num_cmp): added to satisfy Comparable assumption.

* eval.c (rb_add_method): "initialize" should be public if it is a
  singleton method.

* regex.c (re_match): avoid dereferencing if size == 0.
  (ruby-bugs-ja:PR#360)

* time.c (time_cmp): should return nil if an operand is not a
  number nor time. (ruby-bugs-ja:PR#359)

* file.c (rb_stat_cmp): should return nil if an operand is not
  File::Stat.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3076 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-11-22 09:14:24 +00:00
nobu 604689628d * configure.in (LIBRUBY_A): append -static. [ruby-dev:18689]
* configure.in (LIBRUBYARG_STATIC, LIBRUBYARG_SHARED): linker
  argument to link static/shared library respectively.

* Makefile.in (LIBRUBYARG_STATIC, LIBRUBYARG_SHARED): added.

* bcc32/Makefile.sub, win32/Makefile.sub: ditto.

* instruby.rb (LIBRUBY_A): install to libdir.

* lib/mkmf.rb (link_command): link static library of ruby, or
  try_run fails unless LIBRUBY_SO is installed.  [ruby-dev:18646]

* eval.c (call_trace_func): toplevel caller was missing.
  [ruby-dev:18754]

* eval.c (proc_to_s): adjust created line number.

* parse.y (primary, do_block, brace_block): adjust line number of
  block to beginning line, instead of the first statement inside
  the block.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3042 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-11-14 13:51:19 +00:00
matz a1c02ee495 * math.c (math_acos): check errno after operation. ditto for
asin, acosh, atanh, log, log10 and sqrt.

* eval.c (rb_add_method): initialize should always be private.

* parse.y (expr): add rescue modifier rule.

* parse.y (command_call): return, break and next with argument is
  now part of this rule.

* parse.y (yylex): "a" in "a /5" should be considered as a local
  variable. [experimental]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3041 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-11-14 06:18:59 +00:00
nahi ba565bd6b3 * eval.c: remove ENABLE_TRACE/DISABLE_TRACE to trace child nodes of c-call.
[ruby-dev:18699]; nahi commits this as proxy for nobu.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3034 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-11-09 02:52:55 +00:00
matz 54fdacb125 * class.c (rb_define_method): do not set NOEX_CFUNC if klass is
really a module, whose methods must be safe for reciever's type.

* eval.c (rb_eval): nosuper should not be inherited unless the
  overwritten method is an undef placeholder.

* parse.y (primary): allow 'when'-less case statement; persuaded
  by Sean Chittenden.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3032 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-11-07 19:18:16 +00:00
nobu 2b82367a47 * eval.c (rb_yield_0): should enable trace for non-cfunc nodes.
[ruby-dev:18645]

* eval.c (blk_orphan): a block created in a different thread is
  orphan.  [ruby-dev:17471]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3029 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-11-07 01:03:08 +00:00
matz aae36756dc * object.c (Init_Object): added Object#object_id, new name for
Object#id. [new]

* object.c (rb_obj_id_obsolete): give warning for Object#id.

* numeric.c (fix_intern): added Fixnum#to_sym. [new]

* object.c (sym_to_sym): rename from Symbol#intern

* enum.c (enum_zip): added Enumerable#zip. [new]

* array.c (rb_ary_zip): added Array#zip.

* error.c (init_syserr): remove sys_nerr dependency.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3020 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-11-03 11:04:35 +00:00
matz ed18815109 * eval.c (rb_mod_public_method_defined, etc.): new methods:
public_method_defined?, private_method_defined?,
  protected_method_defined?

* object.c (rb_obj_public_methods): new method
  Object#public_methods.

* class.c (ins_methods_i): Object#methods should list both public
  and protected methods.

* class.c (rb_class_public_instance_methods): new method
  Module#public_instance_methods.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3015 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-30 08:04:32 +00:00
knu a2868ff651 * eval.c, file.c, gc.c, io.c, object.c, ruby.c, ruby.h, struct.c,
ext/socket/socket.c: differentiate long and int; use proper
  printf type specifiers and do casts where appropriate.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-29 21:35:28 +00:00
nobu 088276ac84 * eval.c (error_print, rb_longjmp, rb_thread_schedule): flush
error message.  [ruby-dev:18582]

	* eval.c (ruby_cleanup): added.  just clean up without exit.
	  [ruby-dev:18582]

	* eval.c (ruby_exec): added.  execute main evaluation tree without
	  exit.  [ruby-dev:18582]

	* intern.h: prototypes; ruby_cleanup, ruby_exec


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3012 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-29 19:11:17 +00:00
knu 3da9449263 * eval.c, gc.c: adopt a common set of alloca() #ifdef's. This
fixes the build with Intel C Compiler for Linux.

* eval.c (rb_f_require): declare old_func with a real type, not
  just type modifiers.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2995 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-25 18:39:30 +00:00
nobu d4f2f6a7f7 * eval.c (rb_eval): added NODE_DSYM, symbol literal with
interpolation.

* node.h: ditto.

* intern.h: prototypes; rb_is_junk_id, rb_str_dump, rb_str_intern

* object.c (sym_inspect): escape and quote for non-alphanumeric
  symbols.

* parse.y (dsym, tokadd_string, yylex): extended symbol literals.

* parse.y (rb_is_junk_id): added.

* string.c (rb_str_dump, rb_str_intern) : make extern.

* lib/mkmf.rb (create_makefile): deffile should be removed by
  distclean, not clean.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2985 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-23 10:17:30 +00:00
knu 6dfb5aa6ac * hash.c, eval.c: Use (*_NSGetEnviron()) instead of environ on
Darwin for namespace cleanness.  [ruby-core:00537]

* dln.c (dln_load): Fix Darwin support that has been disabled and
  switch to using it on Darwin instead of the system dlopen().
  [ruby-core:00541]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2969 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-17 16:13:44 +00:00
aamine 0944a05fb9 * eval.c (rb_load): should not pass block to the loaded file.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-05 15:46:24 +00:00
nobu 1e3062ede1 * eval.c (rb_thread_interrupt, rb_thread_signal_raise): no need to
save dead thread context. (same as [ruby-dev:18322])
  (ruby-bugs-ja:PR#349)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2935 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-04 11:32:16 +00:00
nobu 4b6dffad02 * bcc32/mkexports.rb: to work on cygwin via telnet.
[ruby-win32:358]

* ext/tcltklib/tcltklib.c (ip_invoke): requires command name
  argument.  [ruby-dev:18438]

* eval.c (ruby_init, ruby_options): Init_stack() with local
  location.  (ruby-bugs-ja:PR#277)

* eval.c (rb_call0): disable trace call.  [ruby-dev:18074]

* eval.c (eval, rb_load): enable trace call.  [ruby-dev:18074]

* eval.c (rb_f_require): set source file name for extension
  libraries.  [ruby-dev:18445]

* ruby.c (translate_char): translate a character in a string;
  DOSISH only.  [ruby-dev:18274]

* ruby.c (ruby_init_loadpath): added argv[0] handling under
  Human68K.  [ruby-dev:18274]

* ruby.c (proc_options): translate directory separator in $0 to
  '/'.  [ruby-dev:18274]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2929 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-10-03 11:20:31 +00:00
nobu cfeb0c30c4 * eval.c (rb_thread_deadlock, rb_thread_schedule, rb_thread_join): more verbose message at deadlock.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2898 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-09-27 09:42:24 +00:00
matz af181db784 * eval.c (rb_eval): Class#inherited should be called after the
execution of the class body.

* parse.y (primary): remove "return outside of method" check at
  compile time.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-09-27 04:26:21 +00:00
matz 7c4d1fe5e0 * regex.c (re_match): p1 may exceed pend limit.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2891 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-09-26 00:48:33 +00:00
matz 4b9a7eac05 * io.c (appendline): forget to terminate with nul.
* eval.c (ruby_run): should set toplevel visibility again here.

* eval.c (rb_eval): should not rely on ruby_class == rb_cObject
  check.   Besides allow implicit publicity for attribute set
  methods.

* parse.y (primary): need not to check class_nest, just set
  whether method is an attrset or not.

* string.c (rb_str_each_line): p might be at the top of the
  string.

* class.c (rb_make_metaclass): class of metaclass should be
  metaclass of superclass, unless class itself is a metaclass;
  class of metaclass of metaclass should point back to self.
  eh, confusing, isn't it.

* class.c (rb_singleton_class): check if its class is singleton
  AND attached to self.

* eval.c (rb_eval): should define class/module under ruby_cbase.

* eval.c (rb_eval): should set class/module path based on
  ruby_cbase, not ruby_class.

* eval.c (module_setup): use ruby_cbase instead of ruby_class.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2887 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-09-25 07:03:05 +00:00
nobu 53178fc7db * eval.c (rb_call0): must not clear ruby_current_node, or
backtrace cannot be genetated.

* intern.h (ruby_yyparse): rather than yyparse().

* parse.y (yylex): nextc() returns -1 at end of input, not 0.

* parse.y (newline_node): reduce deplicated newline node.

* parse.y (literal_concat): get rid of warning.

* parse.y (new_evstr): fixed junk code.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2884 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-09-23 15:48:42 +00:00
nobu 742283385f * eval.c (call_trace_func): should not call trace function while
compilation.

* eval.c (rb_call0): also inside c-func.

* parse.y (yycompile): ditto.

* ruby.c (require_libraries): preserve source file/line for each
  require.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2880 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-09-22 12:52:18 +00:00
nobu 5c6ede680b * eval.c (rb_thread_raise): no need to save dead thread context.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2878 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-09-21 13:30:00 +00:00
michal c7e16e94e4 move struct timeval to missing.h
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-09-17 13:52:45 +00:00
nobu 9d29825355 * eval.c (rb_thread_die): put thread dead state.
* eval.c (rb_thread_atfork): free stack buffer at fork too.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2872 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-09-17 12:07:36 +00:00
matz 73a47246f2 * eval.c (rb_mod_nesting): load wrapping module should appear in
Module#nesting list. (ruby-bugs-ja:PR#328)

* eval.c (rb_thread_remove): free stack buffer on remove.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2870 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-09-17 09:36:05 +00:00
nobu 026e185838 * eval.c (rb_eval): avoid uninitialized global/class variable
warnings at `||='.  [ruby-dev:18278]

* parse.y (stmt, arg): ditto


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-09-13 09:36:28 +00:00
nobu 368e015170 * eval.c (rb_trap_eval): preserve thread status and so on.
[ruby-talk:40337], [ruby-core:00019]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2852 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-09-11 15:13:10 +00:00
nobu bfb1775244 * eval.c (proc_to_s): refined format. [ruby-dev:18215]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2850 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-09-11 09:58:02 +00:00
nobu bb34d7163d * eval.c (rb_mod_define_method): initialize orig_func too.
(ruby-bugs-ja:PR#330)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2838 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-09-10 15:44:36 +00:00
nobu 1ec2805c4f * eval.c (rb_eval): overriding false constant with class/module
definition should be error.  (PR#327)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2796 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-09-05 04:15:50 +00:00
matz 40bc4f5ae4 * array.c (rb_ary_become): should not free ptr if it's shared.
* eval.c (rb_alias): prohibit making an alias named "allocate" if
  klass is a metaclass.

* string.c (rb_string_value_ptr): StringValuePtr() should never
  return NULL pointer.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2764 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-08-29 09:08:18 +00:00
michal 0d0ae37e50 Int vs Long cleanup #3 (ruby-core:352)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2754 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-08-28 08:05:23 +00:00
matz c45908e41f * file.c (rb_find_file): $LOAD_PATH must not be empty.
* file.c (rb_find_file_ext): ditto.

* range.c (range_eq): class check should be based on range.class,
  instead of Range to work with Range.dup.

* range.c (range_eql): ditto.

* class.c (rb_mod_dup): need to preserve metaclass and flags.

* object.c (rb_cstr_to_dbl): had a buffer overrun.

* marshal.c (w_class): integrate singleton check into a funciton
  to follow DRY principle.

* marshal.c (w_uclass): should check singleton method.

* object.c (rb_obj_dup): dmark and dfree functions must be match
  for T_DATA type.

* object.c (rb_obj_dup): class of the duped object must be match
  to the class of the original.

* re.c (rb_reg_quote): do not escape \t, \f, \r, \n, for they are
  not regular expression metacharacters.

* time.c (time_s_alloc): use time_free instead of free (null check,
  also serves for type mark).

* time.c (time_s_at): check dfree function too.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2748 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-08-27 08:31:08 +00:00
nobu 941e43aacf * eval.c (call_trace_func): restore source file/line, as trace
function installed in required library with -r option can be
  called while parsing.  (ruby-bugs:PR#372)

* eval.c (module_setup): unused variable.  [ruby-core:00358]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2743 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-08-24 06:32:40 +00:00
nobu de6c650f44 * eval.c (method_call): check receiver is defined.
* eval.c (umethod_call): removed.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2739 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-08-23 15:01:13 +00:00
michal ffc13a6525 *.c: Int vs Long cleanup
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2734 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-08-21 15:47:54 +00:00
matz c7c1384e60 * eval.c (rb_thread_cleanup): should not modify the global
variable curr_thread.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2731 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-08-21 08:30:09 +00:00
nobu 71a202fc01 particular symbol for win32_exception_list.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2719 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-08-19 03:41:00 +00:00
eban 6d9d1a9bb4 * eval.c (win32_get_exception_list, win32_set_exception_list): Cygwin fix.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2718 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-08-19 03:18:33 +00:00
nobu 11e7d457d6 * eval.c (rb_thread_save_context, rb_thread_restore_context):
save/restore SEH chain on MS-Windows at thread switch.
  [ruby-win32:273]

* eval.c (win32_get_exception_frame, win32_set_exception_frame):
  added.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2716 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-08-19 00:37:16 +00:00
nobu e3f7536501 * eval.c (compile_error): must not clear ruby_sourcefile here.
(ruby-bugs:PR#364).

* eval.c (rb_longjmp): set ruby_sourcefile before making
  backtrace.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2710 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-08-15 22:58:45 +00:00
nobu 92ca6c7773 * eval.c (ruby_current_node) : added to set sourceline on demand.
* eval.c (error_pos, error_print, rb_longjmp, assign): set source
  file/line.

* eval.c (rb_eval): store current node instead of file/line, and
  preserve it at return.

* eval.c (module_setup): ditto.

* eval.c (struct thread): store node instead of file/line.

* eval.c (rb_thread_raise): ditto.

* intern.h (ruby_current_node): added.

* intern.h (ruby_set_current_source): added.

* parse.y (stmt, arg): not fix position of assignment.

* parse.y (node_assign): ditto.

* parse.y (yycompile): clear current node.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2709 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-08-15 11:49:40 +00:00
matz 1f99d95729 * bignum.c (rb_big_cmp): use dbl2big() for Floats, instead of
big2dbl().

* bignum.c (Init_Bignum): rb_big_zero_p() removed.  There may be
  Bignum zero.

* eval.c (rb_call0): new argument added for original method name.
  preserve original method name in frame->orig_func.

* eval.c (is_defined): use frame->orig_func, not last_func.

* eval.c (rb_eval): ditto.

* eval.c (method_call): supply data->oid also to rb_call0().

* object.c (rb_class_allocate_instance): call rb_obj_alloc() when
  called from alias, thus invoke original "allocate".

* eval.c (remove_method): removing allocate from classes should
  cause NameError.

* hash.c (rb_hash_equal): should check default values.

* ext/socket/socket.c (s_recvfrom): update RSTRING len.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2702 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-08-12 07:39:12 +00:00
nobu 91d884b86e * eval.c (rb_eval): set line number from all nodes.
* eval.c (proc_to_s): show source file/line if available.

* marshal.c (r_object): register TYPE_BIGNUM regardless real type.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2700 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-08-11 00:36:38 +00:00
nobu dfa40855bd * eval.c (rb_eval): set constant in cbase scope.
* eval.c (assign): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2684 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-08-03 12:27:33 +00:00
matz 2b98e10419 * eval.c (rb_undef): undef should be done for klass, not ruby_class.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2677 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-07-31 05:18:43 +00:00
aamine fd98af4c65 * eval.c (rb_thread_join_m): add parameter type declaration.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2666 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-07-30 00:13:56 +00:00
aamine 62395a335d * eval.c (localjump_error): add parameter type declaration.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2665 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-07-29 23:34:43 +00:00
nobu ce84517f2c * eval.c (rb_eval): no need to convert to string twice.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2660 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-07-26 14:12:26 +00:00
matz 7194b66fb2 * random.c: replace with Mersenne Twister RNG.
* eval.c (jump_tag_but_local_jump): preserve retval in
  LocalJumpError exceptions.

* parse.y (command): no more check for "super outside of method".

* eval.c (rb_mod_define_method): should set last_class and
  last_func in the block->frame.

* eval.c (error_handle): should handle TAG_THROW as well.

* parse.y (yylex): new decimal notation '0d4567'.

* parse.y (yylex): new octal notation '0o777'.

* parse.y (string_content): every string_content node should
  return string only.  use NODE_EVSTR to coercing.

* eval.c (rb_eval): NODE_EVSTR support.

* re.c (rb_reg_quote): avoid unnecessary string allocation.

* string.c (get_pat): quote metachracters before compiling a
  string into a regex.

* string.c (rb_str_split_m): special treatment of strings of size
  1, but AWK emulation.  now uses get_pat().

* string.c (rb_str_match_m): quote metacharacters.

* string.c (rb_str_match2): ditto.

* ext/socket/socket.c (sock_addrinfo): make all 3 versions of
  getaddrinfo happy.  [ruby-core:00184]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2654 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-07-26 06:12:39 +00:00
nobu 33061b45b4 * eval.c (rb_eval): NODE_EVSTR is no longer used.
* eval.c (eval): not enforce to make assigned variables dynamic.

* parse.y (string): split rules to strings/xstring/regexp to allow
  arbitrary statements inside string interpolation.

* parse.y (here_document): splitted into three phases.

* parse.y (literall_append, literal_concat): added.
  append/concatinate string literals.

* sample/test.rb (valid_syntax): adjust line number for BEGIN.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2590 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-06-24 07:20:42 +00:00
matz b3ecbfaa01 * eval.c (svalue_to_avalue): v may be Qundef. This fix was
suggested by Guy Decoux.

* hash.c (rb_hash_s_create): use rb_hash_aset() instead of calling
  st_insert() directly, to dup&freeze string keys.

* parse.y (yylex): proper error message for "@@0".

* parse.y (yylex): paren to parse_string() must be zero for
  unparenthesized strings.

* parse.y (str_extend): broken string when unterminated "#{".

* enum.c (enum_sort_by): had a bug in 1 element enumeration.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2565 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-06-13 03:55:44 +00:00
matz 22010642b2 * eval.c (rb_eval): ruby_frame->last_func may be null, if it's
called outside of a method.

* parse.y (arg): use INT2NUM, not INT2FIX for tUMINUS.

* parse.y (arg): unnecessary negative tPOW treatment.

* parse.y (tokadd_escape): wrong backslash escapement.

* parse.y (stmt,arg): too much void value check.

* parse.y (stmt,arg): need to check void value on rules which does
  not use node_assign().

* ext/socket/socket.c (ipaddr): need not to taint hostnames.

* range.c (range_include): should be based on "<=>", whereas
  member? still is based on "each".

* range.c (range_min,range_max): redefine methods based on "<=>".


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-06-11 07:02:23 +00:00
matz b7bc0cae53 * string.c (rb_str_aset): should raise error if an indexing string
is not found in the receiver.

* sprintf.c (rb_f_sprintf): "%d" should convert objects into
  integers using Integer().

* lib/tempfile.rb (Tempfile::size): added.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2517 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-06-04 07:34:19 +00:00
matz 34f5c4061c * range.c (range_step): iteration done using "+" if elements are
Numeric.  Otherwise using "succ".

* range.c (range_each): iteration done using "succ".  If the
  elements does not respond to "succ", raise TypeError.  As a
  result, all Enumerable methods, e.g. collect, require elements
  to respond to "succ'.

* range.c (range_member): comparison done using "each", if
  elements are non-Numeric or no-"succ" objects.  Otherwise
  compare using "<=>".

* range.c (Init_Range): remove "size" and "length".


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2506 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-05-30 06:12:29 +00:00
matz 4ab1577db3 * parse.y: yyparse #defines moved from intern.h
* ruby.c (proc_options): access prefixed "ruby_yydebug".

* applied modifies to pacify some of gcc -Wall warnings.

* parse.y (arg): no more ugly hack for "**", so that "-2**2" to be
  parsed as "(-2)**2", whereas "- 2**2" or "-(2)**2" to be parsed
  as "-(2**2)".

* parse.y (yylex): '-2' to be literal fixnum. [new]

* time.c (time_succ): new method for Range support.

* time.c (time_arg): nil test against v[6] (usec).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2500 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-05-29 05:20:39 +00:00
michal bab153b243 * array.c: fixed format string for 'long' args (%d -> %ld).
* class.c: ditto.

	* eval.c: ditto.

	* numeric.c: ditto.

	* pack.c: ditto.

	* parse.y: ditto.

	* range.c: ditto.

	* string.c: ditto.

	* util.c: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-05-28 18:11:07 +00:00
nobu ff3d6d201d * eval.c (scope_node): trick to keep the node has a scope.
* eval.c (rb_eval): NODE_EVSTR: write back local_tbl to the node.

* eval.c (rb_eval): NODE_SCOPE: hold the scope node in ruby_scope.

* eval.c (module_setup): ditto.

* eval.c (rb_call0): ditto.

* node.h (NEW_DASGN, NEW_DASGN_CURR): remove surplus semicolons.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2497 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-05-28 03:20:04 +00:00
matz edbe98d848 * object.c (Init_Object): should do exact match for Module#==.
* compar.c (cmp_eq): returns 'false' if <=> returns 'nil'.

* compar.c (cmp_gt,cmp_ge,cmp_lt,cmp_le,cmp_between): ditto.

* pack.c (pack_pack): should propagate taintedness.

* pack.c (pack_unpack): ditto.

* eval.c (rb_thread_schedule): need to preserve errno before
  calling rb_trap_exec().

* regex.c (calculate_must_string): a bug in charset/charset_not
  parsing.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2482 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-05-21 05:39:19 +00:00
nobu 3b89da683f * eval.c (rb_thread_select): cleanup conditional compilation.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2460 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-05-16 05:53:14 +00:00
matz eb6118992b * eval.c (rb_clear_cache_by_class): new function.
* eval.c (set_method_visibility): should have clear cache forq
  updated visibility.

* numeric.c (flo_to_s): default format precision to be "%.16g".

* util.c (ruby_strtod): use own strtod(3) implementation to avoid
  locale hell.  Due to this change "0xff".to_f no longer returns 255.0

* eval.c (avalue_to_yvalue): new function to distinguish yvalue
  (no-arg == Qundef) from svalue (no-arg == Qnil).

* eval.c (rb_yield_0): use avalue_to_yvalue().

* eval.c (assign): warn if val == Qundef where it means rhs is
  void (e.g. yield without value or call without argument).

* parse.y (value_expr): need not to warn for WHILE and UNTIL,
  since they can have return value (via valued break).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-05-14 06:22:31 +00:00
nobu 9029decfe4 * eval.c (rb_thread_join): added an argument to limit time to wait
the thread.

* eval.c (rb_thread_join_m): new. and added optional argument.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2441 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-05-09 17:01:38 +00:00
aamine 58284a74e9 * eval.c (rb_yield_0): The destination of the goto jump was wrong.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2436 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-05-07 06:28:06 +00:00
aamine bc66ac228c * eval.c (superclass): undesirable "unexpected return" when the superclass is not a Class.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2435 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-05-07 00:20:49 +00:00
matz 4fa0cdea78 * numeric.c (num_step): better iteration condition for float
values;  suggested by Masahiro TANAKA <masa@ir.isas.ac.jp>.

* range.c (range_step): step (for Range#step method) <= 0 makes no
  sence, thus ArgError will be raised.

* range.c (range_each): Range#each method is special case for
  Range#step(1)

* file.c (rb_find_file): load must be done from an abolute path if
  $SAFE >= 4.

* enum.c (enum_partition): new method. [new]

* re.c (rb_reg_s_quote): quote whitespaces for /x cases.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2420 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-05-01 09:41:50 +00:00
nobu b664645ddc * eval.c (rb_proc_new): make Proc from C function. [new]
* intern.h (rb_proc_new): prototype.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2413 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-04-26 00:38:44 +00:00
matz b134b91278 * various files: macro fix-up by Michal Rokos.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2411 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-04-25 13:57:01 +00:00
nobu 565fec45b9 * eval.c (proc_to_proc): return self. [new]
* eval.c (block_pass): no need to convert if block is Proc.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2407 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-04-24 05:58:34 +00:00
matz e3a8c62630 * io.c (rb_io_mode_flags): both 'r+b' and 'rb+' should be allowed.
* io.c (rb_io_mode_modenum): ditto.

* gc.c (rb_memerror): rename from mem_error, and exported.

* gc.c (Init_GC): pre-allocate NoMemoryError instance.

* object.c (convert_type): error message changed from "failed to
  convert" to "cannot convert", since it does not try to convert
  if an object does not respond to the converting method.

* eval.c (block_pass): convert Method to Proc using
  rb_check_convert_type().

* object.c (rb_check_convert_type): always convert T_DATA

* eval.c (rb_thread_cleanup): should not terminate main_thread by
  Fatal error.

* regex.c (is_in_list): need to not exclude NUL and NEWLINE.

* re.c (rb_reg_expr_str): wrong backslash escapement.

* re.c (rb_reg_expr_str): do not escape embedded space
  characters.

* marshal.c (w_object): T_DATA process patch from Joel VanderWerf
  <vjoel@PATH.Berkeley.EDU>.  This is temporary hack; it remains
  undocumented, and it will be removed when marshaling is
  re-designed.

* marshal.c (r_object): ditto.

* numeric.c (num_step): Integer#step is moved to Numeric#step;
  Fixnum#step is merged into this method.

* numeric.c (int_dotimes): Fixnum#times is merged.

* numeric.c (int_upto): Fixnum#upto is merged.

* numeric.c (int_downto): Fixnum#downto is merged.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2401 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-04-24 04:54:16 +00:00
matz 8c3157e43f * eval.c (rb_thread_cleanup): current thread may be THREAD_STOPPED,
for example when terminated from signal handler.

* regex.c (re_compile_pattern): remove /p support.

* regex.h: ditto.

* parse.y (parse_regx): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2385 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-04-19 04:14:07 +00:00
matz e63a990141 * re.c (rb_reg_expr_str): should treat backslash specially in
escaping.

* io.c: complete off_t handling; missing argument for
  fptr_finalize(); polished rb_scan_args call.

* dir.c: wrap multi-statment macro by do { } while (0)

* eval.c, numeric,c, sprintf.c, util.c: ditto.

* bignum.c (rb_big_eq): check `y == x' if y is neither Fixnum,
  Bignum, nor Float.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-04-18 08:46:18 +00:00
nobu 23288f8674 * eval.c (assign): convert mrhs to mvalue.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2377 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-04-16 00:02:49 +00:00
matz 9a24232fd2 * pack.c (pack_unpack): should treat 'U' in character unit, not in
byte unit.

* error.c (exc_initialize): should clear backtrace information.

* io.c (rb_io_fptr_cleanup): should close IO created by IO.new(fd).

* rubyio.h: remove FMODE_FDOPEN


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2375 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-04-15 07:48:47 +00:00
matz 5527b3b961 * eval.c (assign): ruby_verbose should be surrounded by RTEST().
* object.c (rb_str2cstr): ditto.

* parse.y (void_expr): ditto.

* parse.y (void_stmts): ditto.

* variable.c (rb_ivar_get): ditto.

* variable.c (rb_cvar_set): ditto.

* variable.c (rb_cvar_get): ditto.

* dir.c (glob_helper): should have proceed link when link->path
  was non existing symbolic link.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2363 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-04-11 10:03:01 +00:00
nobu 7c96563256 * eval.c (error_handle): default to 1 unless status is set.
* eval.c (ruby_options): guard error_handle() with PROT_NONE.

* eval.c (ruby_stop): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2342 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-04-08 07:09:45 +00:00
matz f60b87038d * parse.y (primary): while/until statement modifiers to "begin"
statement now work as "do .. while" even when begin statement
  has "rescue" or "ensure" [new].

* parse.y (bodystmt): rescue/ensure is allowed at every bodies,
  i.e. method bodies, begin bodies, class bodies[new], and module
  bodies[new].

* ext/socket/socket.c (sock_addrinfo): should specify ai_socktype
  for getaddrinfo hints.

* eval.c (rb_f_abort): embed aborting message into exception
  object [new].

* eval.c (terminate_process): utility function for exit and abort.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2285 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-03-26 06:18:51 +00:00
matz e748f56a6b * ext/socket/socket.c (bsock_do_not_rev_lookup_set): should not be
allowed when $SAFE > 3.

* eval.c (rb_thread_ready): THREAD_TO_KILL threads should not turn
  into THREAD_RUNNABLE on wakeup.

* eval.c (rb_thread_list): THREAD_TO_KILL threads should be in the
  list.

* eval.c (thgroup_list): ditto; by moving gid clearance from
  rb_thread_cleanup().

* dir.c (fnmatch): "*/bar" (with FNM_PATHNAME flag) does not
  match "foo/bar".

* io.c (read_all): files on /proc filesystem with zero stat size,
  may have contents.

* ext/socket/socket.c (tcp_s_gethostbyname): refactored.

* ext/socket/socket.c (sock_s_gethostbyname): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2271 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-03-25 06:18:07 +00:00
matz 2bd0c2bf73 * the VMS support patch submitted by Akiyoshi, Masamichi
<Masamichi.Akiyoshi@jp.compaq.com> is merged.

* eval.c (exec_under): changing ruby_class is OK, but should not
  alter cbase.

* eval.c (yield_under_i): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2258 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-03-22 07:26:42 +00:00
matz 760878b424 * eval.c (is_defined): should check receiver only once.
* eval.c (is_defined): should handle NODE_NEWLINE.

* file.c (rb_file_s_expand_path): memory leak fixed.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2229 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-03-20 09:43:15 +00:00
matz 6d2e56ce7c * re.c (rb_reg_search): should clear last_match if pos is out of
string range.

* string.c (rb_str_index_m): ditto.

* string.c (rb_str_rindex): ditto.

* class.c (rb_define_class): should handle autoload.

* class.c (rb_define_module): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2225 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2002-03-19 09:03:11 +00:00