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

725 Коммитов

Автор SHA1 Сообщение Дата
matz 1d1b8102bc * eval.c (proc_invoke): nail down dyna_var node when Proc object
or continuation is created.  [ruby-dev:24671]

* io.c (rb_io_s_popen): do not expand argv array.  [ruby-dev:24670]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7174 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-11-01 23:49:16 +00:00
matz 3e9e2bd4ed * eval.c (rb_eval): NODE_XSTR should pass copy of literal string.
* array.c (rb_ary_update): a[n,m]=nil no longer works as element
  deletion.

* enum.c (enum_sort_by): protect continuation jump in.
  [ruby-dev:24642]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7145 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-30 06:56:18 +00:00
matz 7c04db1d3c * eval.c (rb_thread_start_0): forget to free some memory chunks.
[ruby-core:03611]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7135 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-29 08:08:16 +00:00
matz b0dee8f90d * eval.c (ruby_cleanup): ruby_finalize_1 may cause exception,
should be wrapped by PUSH_TAG/POP_TAG().  [ruby-dev:24627]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7127 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-29 01:06:37 +00:00
matz 018837b84f * node.h (NODE_TYPESHIFT): allow 4 more bits for line numbers.
[ruby-talk:117841]

* ruby.h (FL_ABLE): nodes are not subject for flag operations.

* io.c (ARGF_FORWARD): should have specified argv explicitly,
  since we no longer have frame->argv saved.  [ruby-dev:24602]

* string.c (RESIZE_CAPA): check string attribute before modifying
  capacity member of string structure.  [ruby-dev:24594]

* ext/zlib/zlib.c (gzreader_gets): use memchr() to to gain
  performance.  [ruby-talk:117701]

* sprintf.c (rb_f_sprintf): raise ArgumentError for extra
  arguments, unless (digit)$ style used.

* io.c (rb_io_fptr_finalize): leave stdin/stdout/stderr open in
  interpreter termination.  [ruby-dev:24579]

* eval.c (frame_free): Guy Decoux solved the leak problem.
  Thanks.  [ruby-core:03549]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7121 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-27 09:29:26 +00:00
nobu da1265564a * eval.c (get_backtrace): ignore illegal backtrace. [ruby-dev:24587]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7109 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-24 23:04:04 +00:00
nobu d0c2e3c7c9 * eval.c (rb_load, search_required, rb_require_safe, rb_require): use
frozen shared string to avoid outside modification.  [ruby-dev:24580]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7106 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-23 15:41:17 +00:00
matz 1419b789ab * eval.c (rb_alias): was warning for wrong condition.
[ruby-dev:24565]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7101 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-22 03:05:10 +00:00
matz d9d60e8c12 * ext/zlib/zlib.c (zstream_shift_buffer): should restore class
field of a buffer.  [ruby-dev:24562]

* eval.c (rb_alias): should warn on method discarding.
  [ruby-dev:24546]

* ext/zlib/zlib.c (zstream_expand_buffer_into): hide internal
  string buffer by clearing klass.  [ruby-dev:24548]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7099 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-21 16:13:32 +00:00
matz fbdc2bf5f7 * parse.y (lex_getline): should update ruby_debug_lines.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7087 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-20 06:53:42 +00:00
nobu c1c101e752 rdoc
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7081 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-20 00:52:42 +00:00
matz 9f6b3edcd6 * array.c (rb_ary_times): Array#* should return an instance of
the class of right operand.  [ruby-dev:24526]

* ext/zlib/zlib.c (zstream_detach_buffer): should not expose
  class-less object to Ruby world. [ruby-dev:24530]

* eval.c (proc_dup): provide Proc#dup as well.  [ruby-talk:116915]

* eval.c (ruby_exec): stack marking position may be higher than
  expected.  thanks to Guy Decoux.  [ruby-core:03527]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7077 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-19 19:17:33 +00:00
nobu 60a7b3a935 * eval.c (search_required): required name must not be changed before
loading.  [ruby-dev:24492]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7075 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-19 15:25:49 +00:00
nobu db00c782f4 * eval.c (rb_require_safe): provide the feature after loaded.
[ruby-list:40085]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7074 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-19 14:59:52 +00:00
matz 1057902ac7 * io.c (read_all): block string buffer modification during
rb_io_fread() by freezing it temporarily. [ruby-dev:24479]

* dir.c (rb_push_glob): block call at once the end of method.
  [ruby-dev:24487]

* ext/enumerator/enumerator.c (enum_each_slice): remove
  rb_gc_force_recycle() to prevent potential SEGV.
  [ruby-dev:24499]

* ext/zlib/zlib.c (zstream_expand_buffer): hide internal string
  buffer by clearing klass.  [ruby-dev:24510]

* ext/socket/socket.c (sock_s_getservbyaname): protocol string
  might be altered.  [ruby-dev:24503]

* string.c (rb_str_upto): check if return value from succ is a
  string.  [ruby-dev:24504]

* io.c (rb_io_popen): get mode string via rb_io_flags_mode() to
  avoid mode string modification.  [ruby-dev:24454]

* io.c (rb_io_getline_fast): should take delim as unsigned char to
  distinguish EOF and '\377'.  [ruby-dev:24460]

* io.c (rb_io_getline): add check for RS modification.
  [ruby-dev:24461]

* enum.c (enum_sort_by): use qsort() directly instead using
  rb_iterate().  [ruby-dev:24462]

* enum.c (enum_each_with_index): remove rb_gc_force_recycle() to
  prevent access to recycled object (via continuation for
  example).  [ruby-dev:24463]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7071 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-19 10:25:23 +00:00
nobu 39324f819f * string.c (rb_str_upto): method result must be checked. [ruby-dev:24504]
* eval.c (error_print): ditto.  [ruby-dev:24519]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7065 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-18 23:47:32 +00:00
akr 5677755bae eval.c (Init_stack): make prototype declaration consistent with the definition in gc.c.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7038 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-15 03:54:02 +00:00
matz fbb88b011a * io.c (rb_io_mode_flags): preserve append mode flag.
[ruby-dev:24436]

* io.c (rb_io_modenum_mode): do not use external output buffer.

* string.c (rb_str_justify): differ pointer retrieval to prevent
  padding string modification.  [ruby-dev:24434]

* range.c (range_each_func): allow func to terminate loop by
  returning RANGE_EACH_BREAK.

* range.c (member_i): use RANGE_EACH_BREAK. [ruby-talk:114959]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6999 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-06 07:40:06 +00:00
matz 77636d0364 * string.c (rb_str_sum): should use bignums when bits is greater
than or equals to sizeof(long)*CHAR_BITS. [ruby-dev:24395]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6982 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-02 11:30:40 +00:00
matz 1b4d97ddba * string.c (rb_str_sum): string may be altered. [ruby-dev:24381]
* eval.c (rb_f_eval): defer pointer retrieval to prevent unsafe
  sourcefile string modification.  [ruby-dev:24373]

* io.c (io_read): block string buffer modification during
  rb_io_fread() by freezing it temporarily. [ruby-dev:24366]

* io.c (rb_io_s_popen): mode argument may be altered.
  [ruby-dev:24375]

* file.c (rb_file_s_basename): ext argument may be altered.
  [ruby-dev:24377]

* enum.c (enum_sort_by): use NODE instead of 2 element arrays.
  [ruby-dev:24378]

* string.c (rb_str_chomp_bang): StringValue() may change the
  receiver.  [ruby-dev:24371]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-01 15:56:05 +00:00
nobu 6f42276d05 * eval.c (rb_call0): invoke finalizers periodically.
* gc.c (gc_sweep): defer running finalizers.

* gc.c (rb_gc_finalize_deferred): run deferred finalizers.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6966 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-27 12:25:21 +00:00
matz 08f84dcf44 * struct.c (rb_struct_s_members): wrong call of struct_members.
[ruby-dev:24333]

* eval.c (proc_invoke): propagate DVAR_DONT_RECYCLE on termination
  to avoid double call to rb_gc_force_recycle(). [ruby-dev:24311]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-24 16:58:51 +00:00
matz c0a998d027 * parse.y (rb_parser_append_print): should handle prelude.
[llama@u01.gate0]

* parse.y (rb_parser_while_loop): ditto.

* array.c (rb_ary_subseq): original object might be modified after
  sharing data creation.  [ruby-dev:24327]

* array.c (rb_ary_replace): ditto.

* array.c (ary_make_shared): freeze shared array. [ruby-dev:24325]

* struct.c (struct_members): always check struct size and size of
  members list in the class.  [ruby-dev:24320]

* string.c (rb_str_sub_bang): check if string is not modified
  during iteration.  [ruby-dev:24315]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-24 05:53:43 +00:00
matz bf189b88d3 * eval.c: remove debug print.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6955 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-23 00:53:21 +00:00
matz 959176599c * eval.c: remove debug print.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6954 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-23 00:52:23 +00:00
matz f1f0f39e03 * hash.c (rb_hash_rehash): replace st_foreach() by its deep
checking counterpart.  [ruby-dev:24310]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6953 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-23 00:51:32 +00:00
matz 136b284b59 * parse.y: remove global variables ruby_eval_tree and
ruby_eval_tree_begin.

* array.c (rb_ary_collect_bang): element size might change during
  comparison.  [ruby-dev:24300]

* array.c (rb_ary_reject_bang): ditto. [ruby-dev:24300]

* array.c (rb_ary_eql): ditto. [ruby-dev:24300]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6944 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-22 00:19:15 +00:00
matz bfabc05a43 * enum.c (enum_sort_by): do not use qsort directly. use
rb_ary_sort_bang() instead.  [ruby-dev:24291]

* enum.c (enum_sort_by): pedantic type check added.
  [ruby-dev:24291]

* hash.c (rb_hash_foreach_iter): check iter_lev after each
  iteration.  [ruby-dev:24289]

* array.c (rb_ary_and): element size might change during
  comparison.  [ruby-dev:24290]

* array.c (rb_ary_or): ditto. [ruby-dev:24292]

* array.c (rb_ary_equal): wrong fix. [ruby-dev:24286]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6939 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-21 03:08:33 +00:00
eban f3721195a9 * eval.c (blk_copy_prev): need frame_dup(). [ruby-dev:24103]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6900 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-13 10:20:36 +00:00
matz d58885977b * eval.c (cvar_cbase): singletons should refer outer cvar scope.
[ruby-dev:24223]

* eval.c (rb_load): should preserve previous ruby_wrapper value.
  [ruby-dev:24226]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6857 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-06 00:48:03 +00:00
matz bf22dff8ea * eval.c (cvar_cbase): class variables cause SEGV in
instance_eval() for fixnums and symbols. [ruby-dev:24213]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6855 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-03 17:41:27 +00:00
matz 880d7af47a * struct.c (make_struct): remove redefining constant when
conflict.  [ruby-dev:24210]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6854 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-03 09:00:52 +00:00
matz 88ba175ab0 * bignum.c (rb_big_and): protect parameters from GC.
[ruby-talk:110664]

* error.c (exc_equal): exceptions are equal if they share same
  class, message and backtrace. [ruby-talk:110354]

* error.c (name_err_mesg_equal): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6826 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-08-28 14:14:11 +00:00
dave ad7564a02a Must learn how to transpose words in Emacs. Sorry...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6821 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-08-25 19:44:46 +00:00
dave 4441ea370b Minor fix to error message
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6820 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-08-25 19:41:31 +00:00
nobu 0d6b190e9f * eval.c (rb_longjmp): Exception#to_str is no longer defined.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6817 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-08-25 06:19:01 +00:00
matz d73fa69935 * dir.c (free_dir): fix memory leak. reported by yamamoto
madoka.

* eval.c (bind_eval): new method. [RCR 251]

* string.c (rb_str_clear): new method. [ruby-dev:24104]

* io.c (rb_io_reopen): should clear allocated OpenFile.  pointed
  out by Guy Decoux. [ruby-core:03288]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6794 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-08-19 07:33:15 +00:00
nobu 4937f8cf34 * eval.c (rb_obj_instance_eval): evaluates under special singleton
classes as for special constants.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6783 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-08-18 03:53:50 +00:00
matz c267d34070 * eval.c (blk_free): fixed serious memory leak. [ruby-dev:24013]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6733 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-08-02 08:52:53 +00:00
matz fd404f03cb * eval.c (is_defined): stupid mistakes fixed. [ruby-dev:24006]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6730 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-07-31 14:13:30 +00:00
matz 021b336535 * eval.c (is_defined): avoid unnecessary method invocations.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6728 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-07-31 04:40:11 +00:00
matz d21727bdc5 * eval.c (is_defined): call is_defined() before invoking
rb_eval().  [ruby-talk:107867]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6723 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-07-30 16:38:03 +00:00
matz 1bd47bf0bc * eval.c (rb_call0): should call rb_call_super() directly for
visibility overriding.  [ruby-dev:23989]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6714 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-07-28 09:05:08 +00:00
matz 9531aef9eb * env.h: remove argv from ruby_frame.
* eval.c (rb_eval): no more copy on write.

* eval.c (assign): ditto.

* eval.c (rb_call0): can receive *rest by specifying negative
  argc.  (-1 means 0 arg and *rest, -2 means 1 arg and *rest...)

* eval.c (rb_call0): properly set frame's argc counter.

* gc.c (rb_gc_mark_frame): need not to mark frame's argv

* gc.c (run_final): wrong order of data. [ruby-dev:23948]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6708 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-07-28 01:22:49 +00:00
matz 7b5b448a1e * eval.c (rb_call0): update ruby_frame->argv with the default
value used for the optional arguments.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6705 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-07-27 08:34:28 +00:00
matz bc667633d0 * eval.c (rb_eval): copy on write for argument local variable
assignment.

* eval.c (assign): ditto.

* eval.c (rb_call0): update ruby_frame->argv with the default
  value used for the optional arguments.

* object.c (Init_Object): "===" calls rb_obj_equal() directly.
  [ruby-list:39937]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6703 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-07-27 08:11:36 +00:00
matz ca14017bb6 * gc.c (define_final): should not disclose NODE* to Ruby world.
[ruby-dev:23957]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-07-23 07:52:38 +00:00
matz 15ba9f85cf * eval.c (THREAD_ALLOC): th->thread should be initialized to NULL.
[ruby-talk:106657]  The solution was found by Guy Decoux.

* file.c (rb_stat_dev_major): new methods File::Stat#dev_major and
  #dev_minor. [ruby-core:03195]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6656 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-07-17 02:23:52 +00:00
nobu fea3684d5e * eval.c (rb_thread_raise): accept third argument as well as
Kernel#raise, and evaluate the arguments to create an exception in
  the caller's context.  [ruby-talk:105507]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6605 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-07-09 05:29:45 +00:00
nobu 4f46d8a69a * eval.c (rb_thread_yield, rb_f_catch): 4th argument to rb_yield_0()
is a set of bit flags.  [ruby-dev:23859]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6581 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-07-05 00:03:50 +00:00