Commit graph

914 commits

Author SHA1 Message Date
nobu
83fbff2f74 commit miss.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4755 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-13 17:34:50 +00:00
nobu
e7257aa72e * eval.c (rb_require_safe): segfault after loading .so.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4754 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-13 17:29:34 +00:00
nobu
4de0bb549b * eval.c (rb_feature_p): match by classified suffix.
* eval.c (rb_require_safe): require library in the specified safe
  level.

* variable.c (rb_autoload, rb_autoload_load): restore safe level
  when autoload was called.  [ruby-dev:21338]

* intern.h: prototypes; rb_require_safe.

* test/runner.rb: accept non-option arguments.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4751 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-13 14:57:36 +00:00
matz
1184373d86 * string.c (str_new4): should not preserve FL_TAINT status in the
internal shared string. [ruby-dev:21601]

* string.c (rb_str_new4): ditto.

* eval.c: use EXIT_SUCCESS and EXIT_FAILURE for exit values.

* process.c: ditto. [ruby-dev:38521]

* lib/debug.rb (debug_command): should enter emacs mode when
  assigned any value to the environment variable "EMACS".
  On Meadow, (getenv "EMACS") is "meadow".


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4749 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-13 13:05:24 +00:00
nobu
3354489d06 * eval.c (is_defined): inheritance line adjustment as like as
rb_call_super().


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4735 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-09 22:50:57 +00:00
nobu
67a98cd52f * eval.c (rb_thread_start_0): prevent thread from GC.
[ruby-dev:21572]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4732 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-09 14:50:24 +00:00
nobu
8022abdc69 * eval.c (rb_thread_start_0): non-volatile should be restored from
volatile.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4731 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-09 10:11:48 +00:00
nobu
dd3eed4f08 * eval.c (proc_save_safe_level, proc_get_safe_level,
proc_set_safe_level): save/restore safe level 1..4.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4730 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-09 08:43:39 +00:00
nobu
582b7e1ca9 * eval.c (rb_set_end_proc, rb_exec_end_proc): restore safe level.
[ruby-dev:21557]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4728 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-09 05:05:43 +00:00
nobu
894d8d9e61 * eval.c (rb_yield_0): no error if block is empty.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4727 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-09 01:51:08 +00:00
nobu
5cefaf0c8f eval.c (eval): re-indented.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4725 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-09 00:09:40 +00:00
nobu
c0e5a7c63f * eval.c (localjump_error): id should be ID.
* eval.c (rb_eval): nd_rval is set in copy_node_scope().

* eval.c (rb_yield_0): unused variable.

* eval.c (rb_yield_0): nothing to do for empty node.

* eval.c (call_end_proc, proc_invoke): adjust backtrace in END.
  [ruby-dev:21551]

* eval.c (rb_thread_start_0): set the value by break as the result.
  [ruby-dev:21552]

* eval.c (rb_thread_start_0, rb_thread_raise, rb_callcc): save
  variables across THREAD_SAVE_CONTEXT.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4723 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-08 21:43:36 +00:00
matz
8a4abe47ca * parse.y (stmt): rhs of multiple assignment should not be
expanded using "to_a". [ruby-dev:21527]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4710 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-06 17:59:53 +00:00
matz
56235e083d * marshal.c (w_object): should pass "weak" value to next level.
[ruby-dev:21496]

* eval.c (proc_alloc): should not use cached object if klass is
  different. [ruby-talk:83685]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4701 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-06 01:50:41 +00:00
nobu
92abdcefe4 * eval.c (rb_f_END): block should be given. [ruby-dev:21497]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4699 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-05 14:07:07 +00:00
nobu
4aa8b47bb9 * eval.c (rb_eval): fix evaluation order. [ruby-list:38431]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-05 08:56:34 +00:00
matz
415283ac95 * marshal.c (w_object): instance variable dump do not cause error
for objects that cannot be dumped, if they traversed from
  marshal_dump.  they are just ignored.

* gc.c (Init_stack): cast "space" (doble value) into unsigned
  int.  should run on PowerPC.

* eval.c (rb_eval): should not execute else part if any exception
  is caught. [ruby-dev:21482]

* parse.y (f_args): should allow unparenthesized block argument.

* parse.y (f_rest_arg): should allow unparenthesized rest
  argument.

* lib/irb/ruby-lex.rb (RubyLex::identify_identifier): support
  'class ::Foo' syntax. [ruby-talk:83514]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4680 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-04 17:51:11 +00:00
matz
10c4bb29b2 * time.c (time_load): restore instance variables (if any) before
loading from marshaled data.

* time.c (time_mdump): new marshal dumper. _dump is still
  available for compatibility.

* time.c (time_mload): new marshal loader.

* marshal.c (w_object): preserve instance variables for objects
  with marshal_dump.

* marshal.c (r_object0): restore instance variables before calling
  marshal_load.

* error.c (rb_warn_m): always return nil.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4651 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-02 08:25:00 +00:00
usa
8caf81f1ea * eval.c (rb_thread_raise): prototype; avoid VC++ warning.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4647 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-01 18:26:11 +00:00
matz
63aa00cb08 * eval.c (rb_f_block_given_p): real required condition is
ruby_frame->prev->iter == ITER_CUR.

* eval.c (rb_block_given_p): ditto.

* eval.c (block_pass): update ruby_frame->iter only when previous
  value is ITER_NOT.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4645 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-01 16:36:47 +00:00
matz
969f4d4c68 * ext/etc/etc.c: add new functions: setpwent, getpwent, endpwent,
setgrent, getgrent, endgrent.

* ext/socket/socket.c (sock_s_gethostbyname): do not reverse lookup.

* Makefile.in: copy lex.c from $(srcdir) if it's not the current
  directory.  [ruby-dev:21437]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4640 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-01 13:41:35 +00:00
nobu
28057a36b6 * eval.c (rb_load): Object scope had priority over required file
scope.  [ruby-dev:21415]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4636 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-10-01 08:01:33 +00:00
matz
13ac4447f6 * eval.c (rb_eval): while/until should not capture break unless
they are destination of the break.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4629 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-09-30 00:21:14 +00:00
matz
4699b4afbb * eval.c (rb_thread_atfork): wrong format specifier.
[ruby-dev:21428]

* process.c (pst_inspect): better description.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4617 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-09-29 02:44:49 +00:00
matz
94bfebb3fa * error.c (rb_warn_m): should not warn if -W0 is specified.
[ruby-talk:82675]

* util.c (ruby_strtod): skip preceding zeros before counting
  digits in the mantissa. (ruby-bugs PR#1181)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4595 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-09-24 23:56:11 +00:00
matz
54fec448f5 * eval.c (proc_invoke): should push PROT_PCALL tag for orphans.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4573 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-09-18 13:57:53 +00:00
matz
5f1db6ea96 * eval.c (proc_invoke): should update "result" for orphans.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4572 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-09-18 13:43:42 +00:00
matz
ea2e8d3592 * eval.c (localjump_destination): should not raise ThreadError
exception for "break". [ruby-dev:21348]

* eval.c (proc_invoke): use result instead of prot_tag->retval.
  retval is no longer propagated to the ancestors.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4567 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-09-17 14:45:25 +00:00
nobu
ecf0c48d5a * intern.h (rb_disable_super, rb_enable_super): replace with dummy
expressions instead of prototypes.  the functions remain yet for
  binary compatibility.  [ruby-talk:81758]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4551 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-09-12 03:30:45 +00:00
matz
fc8e62d0df * bignum.c (rb_big_and): convert argument using 'to_int'.
* bignum.c (rb_big_or): ditto.

* bignum.c (rb_big_xor): ditto.

* eval.c (rb_f_require): allow "require" on $SAFE>0, if feature
  name is not tainted.

* lib/rexml/parsers/baseparser.rb (REXML::Parsers::BaseParser::stream):
  Supports StringIO.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-09-12 03:16:31 +00:00
usa
3587c1c725 * eval.c (win32_get_exception_list): avoid VC7 warning.
[ruby-win32:577]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4542 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-09-10 13:43:27 +00:00
nobu
80edcf82a1 * eval.c (struct tag): dst should be VALUE.
* eval.c (localjump_destination): stop at the scope where the current
  block was created.  [ruby-dev:21353]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4539 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-09-09 01:39:58 +00:00
matz
c492b9b085 * eval.c (mark_frame_adj): need to adjust argv pointer if using
system's alloca. [ruby-core:01503]

* io.c (rb_f_gets): should call next_argv() before type check
  current_file. [ruby-list:38336]

* eval.c (proc_invoke): should retrieve retval when pcall is true.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-09-05 05:07:54 +00:00
nobu
645d4abf42 * eval.c (rb_eval): should not handle exceptions within rescue
argument.  [ruby-talk:80804]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4479 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-09-02 00:51:39 +00:00
nobu
6f8f0a86f5 * eval.c (rb_eval): make tail recursion in ELSE clause of
RESCUE a jump.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4475 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-09-01 09:34:30 +00:00
matz
b6feeb2945 * parse.y (aref_args): forgot to call NEW_SPLAT(). reported by
Dave Butcher.

* eval.c (Init_Thread): protect thgroup_default.  suggested by Guy
  Decoux in [ruby-talk:80623]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4474 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-09-01 09:02:43 +00:00
nobu
d9acb91ae3 * eval.c (rb_thread_switch): add RESTORE_EXIT; exit by another
thread termination.

* eval.c (rb_thread_start_0): should not error_print() within
  terminated thread, because $stderr used by it might be
  overriden now.  [ruby-dev:21280]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4472 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-09-01 07:59:18 +00:00
eban
ea1dc90ae4 * eval.c (TAG_DST()): take no argument.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4470 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-31 13:47:48 +00:00
matz
84c506745a * eval.c (rb_iter_break): should not call TAG_JUMP directly.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4463 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-08-30 05:26:47 +00:00
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