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

298 Коммитов

Автор SHA1 Сообщение Дата
arton 11e4052295 * hash.c (ruby_setenv): check env process block size with OS ver.
* win32/win32.c: export rb_w32_osver for above patch.
* include/ruby/win32.h: declare rb_w32_osver for Win32 Libs.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31132 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-19 16:33:59 +00:00
arton bdc8f4fca9 * hash.c: refactoring prior patch (getenvsize win32 specfic function).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31131 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-19 10:00:51 +00:00
arton 5281610f91 * hash.c (ruby_setenv): calculate total env block size for win32.
* test/ruby/test_env.rb: add test for above patch.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31130 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-19 09:28:49 +00:00
arton 812550b977 * hash.c (ruby_setenv): checking with max process environment block size fow Win32.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31129 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-19 08:10:08 +00:00
usa 45f59656ae * hash.c (ruby_setenv): MSDN says that Windows XP or earlier limits
the total size of environment block to 5,120 chars.  and on such
  OS, putenv() causes SEGV.  So, ruby should limit the size of an
  environment variable to 5,120 bytes for workaround.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31063 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-08 07:52:19 +00:00
naruse 7798b9667e * hash.c (inspect_i): copy the encoding of the first key as
an initial encoding.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30879 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-02-15 07:08:20 +00:00
nobu 46142e472f * hash.c (rb_hash_fetch_m): use useful message for longer key, not a
nonsense id value.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30730 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-30 04:03:19 +00:00
kosaki 1e60af4d67 * hash.c (rb_hash_fetch_m): add GC guard to prevent intermediate
variable from GC.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30683 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-27 17:36:32 +00:00
nobu 79654f3fd3 * hash.c (hash_i): return different values for inverse hash.
[ruby-core:34334]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30514 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-11 23:37:15 +00:00
akr 7b5e72c3a9 * hash.c: parenthesize macro arguments.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30214 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-14 22:18:39 +00:00
nobu 2d4b0d6261 * hash.c (rb_hash_update_by): new API for Hash#update.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30078 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-04 02:21:53 +00:00
nobu 23e8deaf0d * array.c, gc.c, hash.c, object.c, string.c, struct.c,
transcode.c, variable.c, vm.c, vm_insnhelper.c, vm_method.c:
  replace calls to rb_error_frozen() with rb_check_frozen().  a
  patch from Run Paint Run Run at [ruby-core:32014]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29583 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-24 08:14:05 +00:00
nobu 671b498070 Commit miss.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-19 03:25:29 +00:00
nobu 12cbb58819 * test/ruby/test_sprintf.rb: fix ML ref. [ruby-core:32848]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29533 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-19 03:22:03 +00:00
ko1 261661517a * hash.c (rb_hash_aref): skip calling "default" method
if it is not neede for speed-up.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29511 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-15 15:10:17 +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
usa 85bcd25877 * hash.c (ruby_setenv): workaround for old Windows. a patch from
Heesob Park. [ruby-core:32353]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29377 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-30 01:57:17 +00:00
nobu da47bbd1db * hash.c (ruby_setenv): raise if putenv and SetEnvironmentVariable
failed, because of the restriction of the size on Windows.
  based on a patch from Peter Weldon at [ruby-core:32304].  fix:
  Bug#3812, [ruby-core:32250]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29225 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-11 07:47:44 +00:00
nobu b80d5f14df * hash.c (rb_check_hash_type): added.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28845 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-08-03 12:01:13 +00:00
marcandre c1ecff1b1e * hash.c: Documentation: change => in call-seq to ->.
* enum.c: Documentation: whitespace fix for r27865

* error.c: ditto

* file.c: ditto

* io.c: ditto

* load.c: ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27869 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-17 21:31:22 +00:00
marcandre 4afa9ed041 * array.c: Harmonize documentation, in particular regarding:
- methods returning enumerators
    - array methods and argument naming (array -> ary, an_array -> new_ary)
    - minor improvements, typo fixed and styling issues

  Other documentation errors fixed:
    - return value was self instead of a new array (or vice-versa) for
      Array#{pop,shift,permutation,repeated_permutation,keep_if}
    - Array#rindex was missing the form with a block.

* dir.c: ditto.

* enum.c: ditto. Modified Enumerable#reverse_each' documentation to clarify
  that #each will be finish before any element is yielded.

* error.c: ditto.

* gc.c: ditto.

* hash.c: ditto.

* io.c: ditto. IO#{codepoints,each_codepoint} fixed as per [ruby-core:23948]

* numeric.c: ditto.

* range.c: ditto.

* string.c: ditto.

* struct.c: ditto.

* vm_eval.c: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27777 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-13 05:49:55 +00:00
marcandre b140b77926 * array.c (rb_ary_fetch, rb_ary_splice, rb_ary_store): Improve IndexError
messages [ruby-core:28394]

* hash.c (rb_hash_fetch_m): Improve KeyError message

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27670 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-08 04:49:53 +00:00
wanabe 1e6a884a4f * hash.c (ruby_setenv): putenv on msvcrt.dll can't remove empty value.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27483 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-25 02:08:36 +00:00
nobu 4067fd028d * hash.c (rb_hash_aset): allow recursive key. [ruby-core:24648]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26961 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-17 07:25:58 +00:00
marcandre 69fd8a9011 * hash.c (Hash#merge doc): Added explanation for form with block.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26830 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-06 17:03:48 +00:00
matz 871e9d175e * hash.c (rb_hash_select_bang): add #select! and keep_if to Hash.
* hash.c (env_select_bang): ..and to ENV.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26803 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-03 09:44:44 +00:00
mame 79afabe0c5 * hash.c (hash_update): always raise an exception when adding a new
key during iteration.  Traditionally, an exception was raised only
  when rehash occurs, but it may lead to difficult bug to reproduce.
  [ruby-core:23614]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26687 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-02-16 16:20:18 +00:00
nobu f3f43cdbee * array.c (rb_ary_push_m, rb_ary_unshift_m, rb_ary_aset),
(rb_ary_insert, rb_ary_replace, rb_ary_concat),
  (rb_ary_uniq_bang, rb_ary_flatten_bang): check if frozen after
  wrong number of arguments but before TypeError.
  [ruby-core:28140]

* hash.c (rb_hash_replace): ditto.

* string.c (rb_str_replace): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26632 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-02-10 07:31:06 +00:00
akr 96542c3678 * configure.in: test unsetenv returns a value.
unsetenv is void in older BSDs (FreeBSD 6 and OpenBSD 4.5 at least).

* hash.c (ruby_setenv): don't use the result of unsetenv if unsetenv
  doesn't return a value.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26427 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-01-26 12:41:43 +00:00
usa ca52e3be5c * hash.c: need to include errno.h for EINVAL.
* hash.c (ruby_setenv): fixed typo.  see [ruby-dev:40026]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26293 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-01-12 01:00:34 +00:00
knu 217a4bd283 * hash.c (ruby_setenv): Improve the emulatation of setenv(3) on
environments where putenv(3) is used.  Raise EINVAL If a
  variable name contains an '='.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26286 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-01-11 13:58:59 +00:00
knu af23025d77 * hash.c (ruby_setenv): ENV.[]= should raise an error if setenv(3)
or putenv(3) fails.  [ruby-dev:40023]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26279 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-01-11 03:58:39 +00:00
nobu 4d786d21e3 * removed spaces just before tabs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25930 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-26 05:25:08 +00:00
nobu de13a30d32 * hash.c (ruby_setenv): get rid of crash in Solaris 8 and 10.
[ruby-core:26668]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25766 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-14 07:43:26 +00:00
nobu 3f5fbc6c34 * hash.c (ruby_setenv): use ruby_strdup().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25717 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-11 03:54:04 +00:00
usa dc9112dd7a * hash.c (ruby_setenv): also set CRT workarea. ref [ruby-core:25010]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25715 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-11 03:20:21 +00:00
nobu 5b0faff44c * hash.c: use RHASH_IFNONE but not ifnone directly.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25690 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-08 09:13:17 +00:00
matz 327d58f720 * hash.c (default_proc_arity_check): new support function.
* hash.c (rb_hash_initialize): should do arity check as #default_proc=.
  [ruby-core:26281]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25490 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-26 10:30:15 +00:00
matz ba3bfda7a2 * hash.c (rb_hash_set_default_proc): checks arity of defalt_proc
of a Hash.  [ruby-core:26087]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25455 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-24 16:53:11 +00:00
naruse e0af046ad0 * hash.c (rb_f_getenv): use rb_filesystem_str_new_cstr
instead of rb_str_new2.
  ENV['PATH'].encoding should be Filesystem Encoding
  because its content is related to filesystem.
  see [ruby-dev:39393]

* hash.c (env_fetch): ditto.

* string.c (rb_filesystem_str_new): defined.

* string.c (rb_filesystem_str_new_cstr): ditto.

* include/ruby/intern.h (rb_filesystem_str_new): added.

* include/ruby/intern.h (rb_filesystem_str_new_cstr): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25139 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-28 19:24:18 +00:00
nobu 9ebc378e9a * hash.c (rb_f_getenv, env_fetch): env string may be overwritten.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25137 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-28 15:07:08 +00:00
marcandre 0618ca3d8d * hash.c (Hash#each): Fix documentation to reflect insertion order. A patch by Run Paint Run Run [ruby-core:23644] and [ruby-core:21231]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25081 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-24 18:56:22 +00:00
marcandre fc01d42600 * hash.c (doc): doc fix, patch by Run Paint Run Run [ruby-core:23644]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25079 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-24 18:36:52 +00:00
marcandre 1796522f10 * thread.c (rb_exec_recursive_outer, rb_exec_recursive): Added method to short-circuit to the outermost level in case of recursion
* test/ruby/test_thread.rb (test_recursive_outer): Test for above

* hash.c (rb_hash_hash): Return a sensible hash for in case of recursion [ruby-core:24648]

* range.c (rb_range_hash): ditto

* struct.c (rb_struct_hash): ditto

* array.c (rb_array_hash): ditto

* test/ruby/test_array.rb (test_hash2): test for above

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24943 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-15 21:30:50 +00:00
nobu 31b7ae00c0 * include/ruby/st.h (st_hash_func): use st_index_t.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24792 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-08 13:10:04 +00:00
matz e00b83ceb9 * hash.c (rb_hash_replace): should copy compare_by_identity status as well.
[ruby-core:24728]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-03 22:44:45 +00:00
yugui e1f50e2564 * hash.c (Hash::[]): rdoc. patch by Marc-Andre Lafortune.
#1385.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24236 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-22 07:46:37 +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
nobu 1cd0ddea1b * hash.c (rb_hash_aset, recursive_hash): rejects recursive hash.
[ruby-core:22921]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24149 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-16 09:30:23 +00:00
naruse 0dc7839b7f ENV is now locale encoding.
* hash.c (env_str_new): use rb_locale_str_new instead of
  rb_tainted_str_new. rb_locale_str_new set string locale
  encoding and tainted.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24056 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-12 15:04:33 +00:00