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

293 Коммитов

Автор SHA1 Сообщение Дата
nobu cea3919ae6 * configure.in (RUBY_CHECK_PRINTF_PREFIX): check for printf format
specifier if possible.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29468 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-12 15:03:51 +00:00
nobu d410639a6d * compile.c (iseq_build_body), error.c (set_syserr, get_syserr),
(syserr_initialize), gc.c (define_final, rb_gc_copy_finalizer),
  (run_final), hash.c (rb_hash_aref, rb_hash_lookup2),
  (rb_hash_fetch_m, rb_hash_clear, rb_hash_aset, eql_i),
  iseq.c (iseq_load, iseq_data_to_ary), marshal.c (r_symlink),
  thread.c (rb_thread_local_aref),
  variable.c (generic_ivar_remove, ivar_get, rb_const_get_0),
  (rb_cvar_get), vm.c (rb_vm_check_redefinition_opt_method),
  vm_insnhelper.c (vm_get_ev_const), vm_method.c (remove_method),
  ext/iconv/iconv.c (map_charset): use st_data_t.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29462 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-12 14:47:23 +00:00
nobu 359d537878 * marshal.c (w_float): should not append a dot if no fractal part
exists.  [ruby-dev:41936]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28868 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-08-05 09:25:39 +00:00
nobu 25b9eb5e57 * include/ruby/ruby.h (rb_data_type_t): restructured. [ruby-dev:41862]
add parent member.

* error.c (rb_typeddata_inherited_p): new function.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28676 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-18 07:31:54 +00:00
nobu 12b0ccc204 * marshal.c (w_object): suppress empty instance variable entry on
compatible dump objects.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-06-30 23:40:37 +00:00
nobu fff5de3bd4 * marshal.c (w_object, r_bytes0, marshal_load): suppress warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28452 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-06-27 15:13:25 +00:00
nobu 23af1d2a4b * marshal.c (struct dump_arg, struct load_arg): merge taint and
untrust flags into infection as bit flags.

* marshal.c (w_nbyte, clear_dump_arg): infect the buffer as soon
  as appending, because it might have been finalized already at
  exit.  based on a patch by Tomoyuki Chikanaga
  at [ruby-dev:41672].  [Bug #3463]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28413 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-06-23 20:44:44 +00:00
drbrain dd8d4f0075 document marshal_dump and marshal_load
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28017 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-26 02:50:58 +00:00
nobu e207a3912c * marshal.c (w_float): use dtoa directly instead of stripping
needless trailing .0.

* numeric.c (flo_to_s): reverted.  [ruby-dev:41341]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-21 03:26:00 +00:00
marcandre 7729de4d91 * array.c: Documentation: change => in call-seq to ->.
Harmonize "#=>" in examples. [ruby-core:30206]

* bignum.c: ditto

* class.c: ditto

* compar.c: ditto

* cont.c: ditto

* dir.c: ditto

* encoding.c: ditto

* enum.c: ditto

* enumerator.c: ditto

* error.c: ditto

* eval.c: ditto

* file.c: ditto

* gc.c: ditto

* io.c: ditto

* load.c: ditto

* marshal.c: ditto

* math.c: ditto

* numeric.c: ditto

* object.c: ditto

* pack.c: ditto

* proc.c: ditto

* process.c: ditto

* random.c: ditto

* range.c: ditto

* re.c: ditto

* ruby.c: ditto

* signal.c: ditto

* sprintf.c: ditto

* string.c: ditto

* struct.c: ditto

* thread.c: ditto

* time.c: ditto

* transcode.c: ditto

* variable.c: ditto

* vm_eval.c: ditto

* vm_method.c: ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27865 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-17 21:07:33 +00:00
nobu 4eb19660e9 * marshal.c (w_float): strip ".0" from end for rubyspec.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27792 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-13 22:27:10 +00:00
nobu cf32125cff * marshal.c (w_float): use minimal representation.
* numeric.c (ruby_dbl2cstr): split from rb_float_new.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27774 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-13 04:30:07 +00:00
matz 6f828a2437 * marshal.c (r_object0): should prepare placeholder before
processing instance variables.  [ruby-dev:40414]

* marshal.c (id2encidx): no longer need arg.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26751 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-02-24 14:16:59 +00:00
nobu 05270882ae * marshal.c (r_object0): removed duplicated entry for regexp.
[ruby-dev:40416]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26664 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-02-14 03:54:47 +00:00
nobu 27e492bec7 * marshal.c (r_object0): register regexp object before encoding
name.  [ruby-dev:40414]

* re.c (rb_reg_alloc, rb_reg_init_str): split from rb_reg_new_str.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26661 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-02-13 19:45:35 +00:00
matz c1ad9a5fd1 * marshal.c (id2encidx): duplicated entry for encoding name.
[ruby-dev:40388]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26658 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-02-13 06:03:06 +00:00
nobu 87fb6fbcc9 * marshal.c (r_object0): replace non-1.8 escapes directly.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26640 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-02-11 05:43:19 +00:00
nobu 50bf2e550a * marshal.c (r_object0): read sequentially since marshal source
may not be possible to rewind.  [ruby-dev:40386]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26639 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-02-11 05:37:43 +00:00
nobu 902b109465 * marshal.c (w_symbol): dump no encoding for 7bit only coderange
symbol.  [ruby-core:27375]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-01-08 04:12:29 +00:00
naruse 7ed0640ffb Add Float::INFINITY and Float::NAN.
* numeric.c (Init_Numeric): Add Float::INFINITY and Float::NAN.
  [ruby-dev:1657] [ruby-dev:4760] [ruby-list:7023] [ruby-list:46690]
  [ruby-core:26632] [ruby-talk:41352] [ruby-talk:203333]

* include/ruby/defines.h (INFINITY): defined.

* include/ruby/defines.h (NAN): defined.

* include/ruby/util.h (ruby_div0): removed.

* numeric.c (fix_pow): use INFINITY and NAN instead of ruby_div0(1.0).

* marshal.c (r_object0): ditto.

* bignum.c (big_fdiv): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26197 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-12-29 07:05:39 +00:00
nobu 1d10aa8bfc * marshal.c (w_object): reverted r26007. [ruby-dev:39845]
* test/test_delegate.rb (test_marshal): moved from test_marshal.rb.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26042 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-12-07 05:11:10 +00:00
nobu 1cc1ea378a * marshal.c (w_object): dump instance variables when using
marshal_dump.   [ruby-core:24211]

* variable.c (rb_ivar_count): added.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26007 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-12-05 06:35:07 +00:00
wanabe 12b637a65d * marshal.c (mark_dump_arg): mark str. see also [ruby-dev:39735]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25927 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-25 22:27:44 +00:00
nobu 75090a663b * marshal.c (marshal_dump): use normal object as the buffer so
that no hidden object is exposed to ruby-level.  [ruby-dev:39744]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25881 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-21 07:38:51 +00:00
nobu 914b36e3f9 * marshal.c (w_object, r_object0): use RHASH_IFNONE but not ifnone
directly.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25714 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-11 00:36:04 +00:00
naruse 88175d1779 Add rdoc about objects can't Marshal#dump. [ruby-core:23314]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25650 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-04 13:42:03 +00:00
akr b9e0294eda fix typos.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-03 17:46:28 +00:00
nobu f25fd72a0a * marshal.c (w_symbol, r_symreal): fixed the order of symbol and
its encoding modifier, in order to make the dump readable from
  1.8.  [ruby-dev:39515]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25411 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-20 08:57:33 +00:00
nobu 79a8955f8d * marshal.c (id2encidx): register encoding name.
(r_object0): register object before encoding name.
  [ruby-core:24882]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25387 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-17 13:11:05 +00:00
nobu bd2a1db5af * marshal.c (r_object0): suppressed a warning.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-12 02:28:48 +00:00
naruse 8ab0220352 * marshal.c (has_encoding): added for check the regexp
is dumped by 1.8 or 1.9.

* marshal.c (r_object0): use has_encoding.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25303 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-11 18:49:41 +00:00
nobu 95b3da63f1 * marshal.c (marshal_dump, marshal_load): prevent from GC.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25291 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-10 15:14:40 +00:00
nobu 90ce6d2323 * marshal.c (mark_dump_arg, mark_load_arg): ignore already cleaned
data.  [ruby-core:25969]

* marshal.c (clear_dump_arg, clear_load_arg): clear freed fields.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25256 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-07 07:42:30 +00:00
nobu f6f89b880a * marshal.c (struct {dump,load}_arg): manage with dfree, instead
of using local variable which may be moved by context switch.
  [ruby-dev:39425]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25230 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-04 10:30:56 +00:00
nobu 1aa21e630f * marshal.c (r_object0): entry regexp object before its encoding
name.  [ruby-core:25625]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25001 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-18 14:51:18 +00:00
nobu a8cf451714 * marshal.c (must_not_be_anonymous): fixed silly miss.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24489 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-09 22:02:31 +00:00
nobu 3ece383660 * marshal.c (class2path, w_unique, w_extended, w_class, w_uclass):
deal with non-ascii class path.  [ruby-core:24790]

* marshal.c (r_unique, path2class, path2module, obj_alloc_by_path),
  (r_object0): ditto.

* variable.c (rb_path_to_class): new encoding-aware function to
  get a class from its name.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24488 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-09 21:55:55 +00:00
nobu ac2557e09f * marshal.c (w_symbol r_symlink, r_symbol, r_object0): fix for
non-ascii symbols.  loading such symbols can cause segfaults in
  older versions.  [ruby-core:24788]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24443 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-07 21:18:33 +00:00
nobu e07cb859cc * suppressed shorten-64-to-32 warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24195 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-18 08:05:32 +00:00
naruse f03642038e * marshal.c (r_object0): should return real object.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24095 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-13 16:26:08 +00:00
nobu 4fbc270cd5 * marshal.c (r_object0): should not shadow outer variable not to
return Qnil always.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24087 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-13 11:21:55 +00:00
naruse ecb962058a * marshal.c (r_object0): copy instance variables to new regexp.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24086 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-13 10:43:45 +00:00
naruse 143d1d840d * marshal.c (r_object0): set encoding only if the encoding is not US-ASCII.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24015 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-10 05:51:17 +00:00
naruse f69af8e877 Remove debug print.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24002 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-09 16:02:02 +00:00
naruse e6989a7ec2 * marshal.c (r_object0): replace \u by u when the regexp is
made by Ruby 1.8. [ruby-dev:36750]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23999 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-09 14:47:22 +00:00
nobu 4bef732db1 * marshal.c (w_encoding): encodings need extra depth.
[ruby-core:24100]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23918 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-06-30 23:46:20 +00:00
nobu d70719b061 * marshal.c (r_ivar): should not set internal encoding ivar as an
ordinary ivar.  [ruby-dev:38596]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23677 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-06-13 00:58:30 +00:00
matz 7afe0c92ea * marshal.c (w_encoding): more compact encoding information for
US-ASCII and UTF-8.  [incompatible] [experimental]

* marshal.c (r_ivar): restore :E encoding information.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23597 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-05-27 16:31:51 +00:00
nobu 8e86bd59c0 * common.mk (bignum.o, numeric.o): depend on util.h.
* bignum.c, marshal.c: fixed types.

* numeric.c (infinite_value): use ruby_div0.

* include/ruby/util.h (ruby_div0): moved from marshal.c.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23575 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-05-26 04:58:15 +00:00
nobu d1abc53721 * array.c, bignum.c, dln.c, error.c, gc.c, io.c, marshal.c,
numeric.c, pack.c, strftime.c, string.c, thread.c, transcode.c,
  transcode_data.h, util.c, variable.c, vm_dump.c,
  include/ruby/encoding.h, missing/crypt.c, missing/vsnprintf.c:
  suppress VC type warnings.  [ruby-core:22726]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22914 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-12 09:16:15 +00:00
nobu 080525aa68 * marshal.c (div0), numeric.c (infinite_value): new functions to
get rid of VC divion by 0 warnings.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22913 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-12 09:09:15 +00:00
nobu 12d2c8ba41 stripped trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22552 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-22 14:23:33 +00:00
knu df0f575e1d Fix grammos regarding the verb "refer".
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22196 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-10 08:55:40 +00:00
nobu 1d54761948 * marshal.c (marshal_dump): fixed for check_dump_arg.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-01 10:11:51 +00:00
nobu 7558136984 * marshal.c (marshal_dump): initializes dump_arg before any funcall.
[ruby-dev:36648]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19652 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-01 09:57:38 +00:00
ko1 69029b90fe * gc.c, include/ruby/ruby.h: rename rb_register_mark_object()
to rb_gc_register_mark_object().
* eval.c, vm.c: initialize vm->mark_object_ary at
  Init_top_self().
* bignum.c, complex.c, encoding.c, ext/win32ole/win32ole.c,
  io.c, load.c, marshal.c, rational.c, ruby.c, vm.c:
  use rb_gc_register_mark_object() instead of
  rb_global_variable() or rb_gc_register_address().



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19365 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-15 14:59:14 +00:00
matz 31b6ea65bb * include/ruby/ruby.h (DBL2NUM): renamed from DOUBLE2NUM.
a patch from Tadashi Saito <shiba at mail2.accsnet.ne.jp>
  in [ruby-dev:36102].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19160 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-05 18:24:21 +00:00
nobu 14cf8d09ca * marshal.c (struct load_arg): data is now st_table.
* marshal.c (mark_load_arg): marks data and compat_tbl.

* marshal.c (r_object0): no need to check if reentered.

* marshal.c (marshal_load): make the wrapper with mark_load_arg.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19056 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-02 02:47:38 +00:00
nobu 5f9c188d97 * include/ruby/ruby.h (rb_intern_const): tiny optimization.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-16 00:20:31 +00:00
shugo 38c94fa149 * marshal.c (marshal_load): set arg.untrust properly.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18583 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-13 09:42:22 +00:00
shugo f433d710d0 * object.c (rb_obj_untrusted): new method Object#untrusted?.
(rb_obj_untrust): new method Object#untrust.
  (rb_obj_trust): new method Object#trust.
* array.c, debug.c, time.c, include/ruby/ruby.h, re.c, variable.c,
  string.c, io.c, dir.c, vm_method.c, struct.c, class.c, hash.c,
  ruby.c, marshal.c: fixes for Object#untrusted?.
* test/ruby/test_module.rb, test/ruby/test_array.rb,
  test/ruby/test_object.rb, test/ruby/test_string.rb,
  test/ruby/test_marshal.rb, test/ruby/test_hash.rb: added tests for
  Object#untrusted?.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18568 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-13 07:25:05 +00:00
nobu 3916eb783c * marshal.c (dump_ensure), process.c (run_exec_dup2),
string.c (rb_str_replace), transcode.c (transcode_dispatch): fixed
  memory leaks.  based on patches from shinichiro.h <shinichiro.hamaji
  AT gmail.com> at [ruby-dev:35751].


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18341 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-04 05:08:57 +00:00
nobu f94f8f351e * configure.in (sizeof ptrdiff_t): check for size of ptrdiff_t.
* include/ruby/ruby.h (PRI?PTRDIFF, PRI?SIZE): printf conversion
  specifiers for ptrdiff_t and size_t/ssize_t.

* insns.def (leave), marshal.c (long_toobig), transcode.c
  (str_transcode), vm_dump.c (control_frame_dump, stack_dump_each),
  (debug_print_register, debug_print_pre): t and z length modifiers
  are C99.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18038 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-12 13:17:29 +00:00
akr 340cd503a7 * include/ruby/ruby.h (struct RRegexp): new field usecnt. replace
str and len by src.

* gc.c (gc_mark_children): mark src field of regexp.
  (obj_free): don't free str field.

* re.c (REG_BUSY): removed.
  (rb_reg_initialize): prohibit re-initialize regexp.
  (rb_reg_search): use usecnt to prevent freeing regexp currently
  using.  this prevents SEGV by:
    r = /\A((a.)*(a.)*)*b/
    r =~ "ab" + "\xc2\xa1".force_encoding("euc-jp")
    t = Thread.new { r =~ "ab"*8 + "\xc2\xa1".force_encoding("utf-8")}
    sleep 0.2
    r =~ "ab"*8 + "\xc2\xa1".force_encoding("euc-jp")



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-28 12:25:45 +00:00
nobu 02337b089e * marshal.c (w_object, marshal_dump, r_object0, marshal_load): search
public methods only.  [ruby-core:17283]

* object.c (convert_type): ditto.

* lib/singleton.rb (Singleton#_dump): conversion method should be
  public.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17396 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-18 03:05:33 +00:00
nobu 5a647a3f5f * include/ruby/ruby.h (CONST_ID): constant ID cache for non-gcc.
* *.c: no cache in init functions.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17053 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-09 09:25:32 +00:00
mame 41a1a4ed76 * marshal.c (w_object): add a check for modification of array during
its dump.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16761 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-02 15:29:11 +00:00
naruse ccb61351ea * rational.c (string_to_r_internal): use rb_isdigit.
* marshal.c (long_toobig): use %zd.

* ruby.c (set_arg0): move unused variable definition.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16736 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-01 18:23:10 +00:00
nobu 075530a685 * suppress warnings with -Wwrite-string.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16716 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-31 09:28:20 +00:00
nobu de9d25c544 * marshal.c (w_object, marshal_dump, r_object0, marshal_load): search
private methods too.  [ruby-dev:34671]

* object.c (convert_type): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16654 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-28 03:52:44 +00:00
nobu 2b791b2ddd * marshal.c (check_dump_arg, check_load_arg): check if reentered.
[ruby-dev:34802]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16533 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-22 11:20:56 +00:00
matz 4a407ec3a7 * marshal.c (w_object): add volatile to avoid potential GC bug. a
patch from Tomoyuki Chikanaga <chikanag at nippon-control-system.co.jp>
  in [ruby-dev:34311].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15966 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-10 23:10:49 +00:00
akr 7132a4f979 * marshal.c (w_object): TYPE_USERDEF assigns id for ivars first.
[ruby-dev:34159] by nagachika.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15949 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-10 08:41:46 +00:00
akr 861219ce4a fix doc.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15734 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-03-09 01:04:46 +00:00
akr b58e36da4a * include/ruby/ruby.h (ROBJECT_NUMIV): renamed from ROBJECT_LEN.
(ROBJECT_IVPTR): renamed from ROBJECT_PTR.

* variable.c: follow the above renaming.

* object.c: ditto.

* gc.c: ditto.

* marshal.c: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15604 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-02-25 16:18:18 +00:00
usa 1e3aa62254 * marshal.c (r_object0): no need to call r_entry for immediate values.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15358 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-31 08:31:20 +00:00
naruse b0a18f4d9f * marshal.c (r_object0): call r_entry/r_leave to call proc when TYPE_FIXNUM,
TYPE_NIL, TYPE_TRUE, TYPE_FALSE, TYPE_SYMBOL.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15356 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-31 06:10:56 +00:00
akr 26b86d8a72 * marshal.c (w_object): dump string encoding in USERDEF.
[ruby-dev:33401]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15253 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-26 10:31:11 +00:00
akr f923cc360a * marshal.c (r_byte): use getbyte instead of getc.
(marshal_load): ditto.
  [ruby-dev:33264]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15243 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-25 16:37:53 +00:00
akr 063beac343 * encoding.c (rb_enc_internal_get_index): extracted from
rb_enc_get_index.
  (rb_enc_internal_set_index): extracted from rb_enc_associate_index

* include/ruby/encoding.h (ENCODING_SET): work over ENCODING_INLINE_MAX.
  (ENCODING_GET): ditto.
  (ENCODING_IS_ASCII8BIT): defined.
  (ENCODING_CODERANGE_SET): defined.

* re.c (rb_reg_fixed_encoding_p): use ENCODING_IS_ASCII8BIT.

* string.c (rb_enc_str_buf_cat): use ENCODING_IS_ASCII8BIT.

* parse.y (reg_fragment_setenc_gen): use ENCODING_IS_ASCII8BIT.

* marshal.c (has_ivars): use ENCODING_IS_ASCII8BIT.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14922 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-07 02:49:01 +00:00
akr 6cdef2dc7e * $Date$ keyword removed to avoid inclusion of locale dependent
string.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14912 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-06 15:49:38 +00:00
nobu 8638ee26e7 * include/ruby/intern.h, re.c (rb_reg_new): keep interface same as
1.8.  [ruby-core:14583]

* include/ruby/intern.h, re.c (rb_reg_new_str): renamed, and defines
  HAVE_RB_REG_NEW_STR macro to tell if it is available.

* include/ruby/encoding.h (rb_enc_reg_new): added.

* insns.def (toregexp), marshal.c (r_object0): use rb_reg_new_str().

* re.c (rb_reg_regcomp, rb_reg_s_union): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14884 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-04 16:30:33 +00:00
matz c227d3feb3 * insnhelper.ci (vm_search_normal_superclass): rename function.
* insnhelper.ci (vm_search_superclass): ditto.

* proc.c (struct METHOD): rename rklass -> rclass.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13995 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-22 01:17:52 +00:00
akr a070c4fbe3 * configure.in: check struct timespec, clock_gettime, utimensat,
struct stat.st_atim,
  struct stat.st_atimespec,
  struct stat.st_atimensec,
  struct stat.st_mtim,
  struct stat.st_mtimespec,
  struct stat.st_mtimensec,
  struct stat.st_ctim,
  struct stat.st_ctimespec,
  struct stat.st_ctimensec.

* include/ruby/missing.h: provide struct timespec if not available.

* time.c: support nanosecond-resolution using struct timespec.

* include/ruby/intern.h: provide rb_time_nano_new.

* file.c (utime_internal): use utimensat if available.
  (rb_file_s_utime): refactored.
  (rb_f_test): use stat_atime, stat_mtime, stat_ctime.
  (rb_stat_cmp): check tv_nsec.
  (stat_atimespec): new function.
  (stat_atime): ditto.
  (stat_mtimespec): ditto.
  (stat_mtime): ditto.
  (stat_ctimespec): ditto.
  (stat_ctime): ditto.
  (rb_stat_atime): use stat_atime.
  (rb_file_s_atime): ditto.
  (rb_file_atime): ditto.
  (rb_stat_mtime): use stat_mtime.
  (rb_file_s_mtime): ditto.
  (rb_file_mtime): ditto.
  (rb_file_ctime): use stat_ctime.
  (rb_file_s_ctime): ditto.
  (rb_stat_ctime): ditto.

* variable.c (rb_copy_generic_ivar): clear clone's instance variables
  if obj has no instance variable.

* marshal.c (w_object): dump instance variables of generated string
  for TYPE_USERDEF, even if original object has instance variables.

* lib/time.rb (Time#xmlschema): use nsec instead of usec.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13968 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-19 09:09:38 +00:00
akr 30e97cbb8b * marshal.c (mark_dump_arg): it may be called after dump_ensure.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13961 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-18 11:50:25 +00:00
ko1 25c0cb981a * include/ruby/ruby.h: introduce 2 macros:
RFLOAT_VALUE(v), DOUBLE2NUM(dbl).
  Rename RFloat#value -> RFloat#double_value.
  Do not touch RFloat#double_value directly.
* bignum.c, insns.def, marshal.c, math.c, numeric.c, object.c,
  pack.c, parse.y, process.c, random.c, sprintf.c, string.c,
  time.c: apply above changes.
* ext/dl/mkcallback.rb, ext/json/ext/generator/generator.c:
  ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13913 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-13 16:00:53 +00:00
matz 4ab384be2d * test/ruby/test_basicinstructions.rb: updated for new class
behavior.  [ruby-dev:32192]

* encoding.c (enc_name): Encoding should not rely on ENCODING in
  the FL_USERS flags.

* encoding.c (rb_enc_from_encoding): do not call rb_enc_associate
  for encoding itself.

* encoding.c (enc_register_at): ditto.

* marshal.c (r_ivar): do not set real instance variable for
  encoding data associated.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13848 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-09 04:37:36 +00:00
ko1 9a0e440b81 * marshal.c (w_object): should be SPECIAL_CONST_P() instead of
IMMEDIATE_P().



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13845 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-09 01:39:56 +00:00
nobu 5d5d0b5c38 * encoding.c (rb_id_encoding): returns ID "encoding".
* marshal.c (w_encoding): dump encoding name.

* marshal.c (r_ivar): load encoding.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13744 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-10-19 11:08:16 +00:00
nobu 16652ad4ce * marshal.c (r_bytes0): refined length check. [ruby-dev:32059]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13704 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-10-15 02:45:14 +00:00
nobu d420686fdc * marshal.c (r_bytes0): commit miss.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13701 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-10-15 01:06:51 +00:00
nobu 14264f5f62 * marshal.c (r_bytes0): check if source has enough data.
[ruby-dev:32054]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13700 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-10-15 00:58:09 +00:00
matz 0d07755472 * marshal.c (r_leave): move proc invocation from r_entry() to
avoid potential crash.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13567 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-09-29 08:17:48 +00:00
akr 5c0e68c39c * include/ruby/intern.h: export rb_ivar_foreach.
* include/ruby/ruby.h: modify struct RObject and RClass for optimizing
  T_OBJECT space.  [ruby-dev:31853]
  (ROBJECT_LEN, ROBJECT_PTR)
  (RCLASS_IV_TBL, RCLASS_M_TBL, RCLASS_SUPER, RCLASS_IV_INDEX_TBL)
  (RMODULE_IV_TBL, RMODULE_M_TBL, RMODULE_SUPER): abstract accessor
  defined.

* variable.c: support the modified RObject and RClass.

* object.c: ditto.

* class.c: ditto.

* gc.c: ditto.

* marshal.c: ditto.

* eval_method.ci: use the abstract accessor.

* insns.def: ditto.

* proc.c: ditto.

* struct.c: ditto.

* eval.c: ditto.

* error.c: ditto.

* vm.c: ditto.

* insnhelper.ci: ditto.

* ext/digest/digest.c: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13543 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-09-28 06:21:46 +00:00
nobu b416cc6f3f * gc.c (rb_mark_set): new function to mark keys.
* marshal.c (struct dump_arg, struct load_arg): added wrappers to mark
  data and compat_tbl entries.  [ruby-dev:31870]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13528 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-09-26 19:40:49 +00:00
nobu 71341b814a * marshal.c (struct dump_arg, struct load_arg): added wrappers to mark
compat_tbl entries.  [ruby-dev:31870]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13527 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-09-26 19:12:04 +00:00
nobu 9391daf954 * io.c (rb_io_s_sysopen): should not use alloca for unknowen size
input.  [ruby-dev:31775]

* parse.y (rb_id2str): ditto.

* marshal.c (w_float): use snprintf instead of sprintf.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13430 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-09-12 06:19:06 +00:00
matz c19fafb0a4 * marshal.c (r_object0): struct allocation first to check if a
class is a struct.  compatibility check should come next.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13423 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-09-09 16:23:27 +00:00
akr 507a5116c6 * marshal.c (r_object0): check T_STRUCT type for structs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13418 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-09-08 16:59:49 +00:00
akr 29dcf02239 values doesn't needs to be volatile since it is passed to rb_struct_initialize.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13417 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-09-08 16:29:50 +00:00