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

393 Коммитов

Автор SHA1 Сообщение Дата
shirosaki b56a2afc14 Index $LOADED_FEATURES so that require isn't so slow
* load.c (rb_feature_p, rb_provide_feature): index $LOADED_FEATURES
  so that require isn't so slow.

* load.c (rb_provide_feature, get_loaded_features_index): ensure
  that $LOADED_FEATURES entries are frozen strings.  The user
  must mutate $LOADED_FEATURES itself rather than its individual
  entries.

* load.c (reset_loaded_features_snapshot): add a new function to reset
  vm->loaded_features_snapshot.

* load.c (get_loaded_features_index_raw): add a new function to get
  the loaded-features index.

* load.c (features_index_add_single): add a new function to add to the
  loaded-features index a single feature.

* load.c (features_index_add): add a new function to add to the
  loaded-features index all the required entries for `feature`.

* vm_core.h (rb_vm_struct): add fields.

* vm.c (rb_vm_mark): mark new fields.

* include/ruby/intern.h (rb_hash_clear): declare function.

* hash.c (rb_hash_clear): make function non-static.
  Patch by Greg Price.
  [ruby-core:47970] [Bug #7158]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37480 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-05 15:27:01 +00:00
zzak 63e9bc50f5 * hash.c (rb_hash_delete): Correct grammar
Patch by Glenn Oppegard
  [Fixes #208 Github]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37435 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-03 02:45:15 +00:00
nari c3a46d6aca * include/ruby/ruby.h: add C APIs.
VALUE rb_newobj_of(VALUE klass, VALUE flags)
  #define NEWOBJ_OF(obj,type,klass,flags)
  These allow to change a allocation strategy depending on klass
  or flags.

* gc.c: ditto

* array.c: use new C API.
* bignum.c: ditto
* class.c: ditto
* complex.c: ditto
* ext/socket/ancdata.c: ditto
* ext/socket/option.c: ditto
* hash.c: ditto
* io.c: ditto
* marshal.c: ditto
* numeric.c: ditto
* object.c: ditto
* random.c: ditto
* range.c: ditto
* rational.c: ditto
* re.c: ditto
* string.c: ditto
* struct.c: ditto
  [Feature #7177][Feature #7047]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37275 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-20 06:57:51 +00:00
tenderlove fb03eb91fe * hash.c (initialize_copy): unset the default proc if there isn't one
for the target hash, call to_hash, check frozen status.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37271 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-19 21:20:33 +00:00
tenderlove a34a3c2caa * hash.c (initialize_copy): duping should rehash the hash.
* test/ruby/test_hash.rb: added a test to ensure rehash.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37248 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-18 00:24:00 +00:00
tenderlove b3803cc49a * hash.c (initialize_copy): copy the underlying st_table on dup,
rather than copying the hash key by key. [ruby-core:48009]

* test/ruby/test_hash.rb: relevant tests for initialize_copy

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37232 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 21:33:59 +00:00
nobu 8d6add973e hash.c: raise on invalid input
* hash.c (rb_hash_s_create): raise an exception, when input elements
  are not one or two elements arrays.  [ruby-core:39945] [Bug #5406]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36391 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-14 08:08:15 +00:00
nobu b0dd250dc9 use RB_TYPE_P() instead of comparison of TYPE()
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35763 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-23 07:13:21 +00:00
nobu 770ddcdfe0 * hash.c, object.c, struct.c, lib/ostruct.rb: add to_h methods.
[Feature #6276]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35452 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-24 03:46:55 +00:00
naruse 62c9ecfa12 Revert r35339-35343 because of no tests.
* hash.c: Alias ENV.to_h to ENV.to_hash [ref #6276]

* lib/ostruct.rb: Add OpenStruct#to_h [Feature #6276]

* struct.c: Add Struct#to_h [Feature #6276]

* object.c: Add NilClass#to_h [Feature #6276]

* hash.c: Add Hash#to_h [Feature #6276]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35383 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-18 03:59:15 +00:00
marcandre fc7676fcd6 * hash.c: Alias ENV.to_h to ENV.to_hash [ref #6276]
[rubyspec:6587eead7cd1]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35343 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-16 03:16:40 +00:00
marcandre f92be2c01a * hash.c: Add Hash#to_h [Feature #6276]
[rubyspec:84b7fe3f24d2]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35339 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-16 03:15:42 +00:00
nobu 723bfaba59 * hash.c (no_new_key): moved test to raise outside.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35318 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-13 11:30:39 +00:00
naruse 99d38f82e0 * hash.c (inspect_i): keep string's coderange.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35317 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-13 08:39:13 +00:00
nobu 2d74f3e682 * hash.c (rb_hash_aset, rb_hash_update, rb_hash_update_by): use
st_update() to reduce evaluation of hash values.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35316 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-13 06:26:53 +00:00
nobu e2aaf978b5 * hash.c: use RHASH_ITER_LEV(), not iter_leve directly.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35309 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-12 06:10:31 +00:00
marcandre 6b18a8c2e9 * hash.c (rb_hash_set_default_proc): Accept nil, patch by Run Paint
[Feature #4234]

* test/ruby/test_hash.rb: test for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35268 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-09 04:07:53 +00:00
nobu 160d02d830 * hash.c (hash_default_value): extract from rb_hash_aref(), to be
shared with rb_hash_shift(), so that overriding Hash#default
  will be respected.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35197 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-31 05:23:01 +00:00
nobu e8a1874c19 * hash.c: do not allocate st_table when it is not necessary.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35195 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-31 05:16:04 +00:00
nobu a3626110d9 * hash.c: remove unnecessary checks for Qundef in hash iterations.
since hash use st_foreach_check for iterations, such checks are
  needless.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35193 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-31 04:20:45 +00:00
nobu 197627354e * st.c (st_foreach_check): remove the entry by replacing with never
when ST_DELETE.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35186 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-30 22:53:26 +00:00
nobu d0380e2e56 * hash.c (st_foreach_safe): since table is not for VALUE, Qundef is
not special value, so use 0 instead.  therefore this function can be
  applied to only st_table which 0 is invalid as keys, e.g., IDs.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35185 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-30 22:47:33 +00:00
nobu 4fa3236600 * hash.c: Qundef cannot be passed from st_foreach_check().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35184 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-30 22:44:33 +00:00
nobu 4b3a1f77e1 * hash.c, marshal.c, object.c, variable.c: fix callback argument types
of iterators.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35183 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-30 22:40:54 +00:00
usa f59caa2950 * hash.c (env_str_new, rb_f_getenv, env_fetch): use rb_str_conv_enc()
instead of rb_str_encode() to simplify the code.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35031 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-15 04:49:20 +00:00
usa fcaee4bd64 * win32/win32.c, include/ruby/win32.h (rb_w32_ugetenv): new API to
accept and to return UTF-8 strings.

* win32/win32.c (rb_w32_getenv): follow above change.

* win32/win32.c (rb_w32_get_environ): returns UTF-8 environment area.

* hash.c (env_str_new, rb_f_getenv, env_fetch): follow above changes.
  [Bug #5570] [ruby-core:40737]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35030 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-15 03:57:02 +00:00
marcandre 7316302483 * include/ruby/intern.h: Add rb_check_arity, rb_error_arity [#6085]
* array.c: Use rb_check_arity / rb_error_arity

* class.c: ditto

* enumerator.c: ditto

* eval.c: ditto

* file.c: ditto

* hash.c: ditto

* numeric.c: ditto

* proc.c: ditto

* process.c: ditto

* random.c: ditto

* re.c: ditto

* signal.c: ditto

* string.c: ditto

* struct.c: ditto

* transcode.c: ditto

* vm_eval.c: ditto

* vm_insnhelper.c: ditto & implementation of rb_error_arity

* test/ruby/test_arity.rb: tests for above

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35024 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-14 21:10:34 +00:00
nobu a73d958c33 * st.c: add st_foreach_check for fixing iteration over packed table
and st_delete_safe.  patched by Sokolov Yura at
  https://github.com/ruby/ruby/pull/84


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34963 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-10 14:52:19 +00:00
ktsj b212b84fc1 * hash.c: remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34895 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-04 13:59:23 +00:00
drbrain 0e0286404f * hash.c (Init_Hash): Add section on how objects are used as Hash keys
and how to use custom classes as Hash keys.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34771 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-23 23:03:39 +00:00
nobu ca9b0f56fc * hash.c (rb_any_hash): treat Qundef like as other special constants.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34723 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-21 11:23:50 +00:00
nobu bc3b4ddddd * hash.c (hash_foreach_iter): fix signature.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34722 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-21 11:22:49 +00:00
nobu 413f24d3b0 * whitespace cleanup.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33634 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-04 07:19:23 +00:00
akr 2bb5441808 * complex.c: use "__sun" instead of "__sun__" to detect SunOS.
* math.c: ditto.

* hash.c: ditto.

* atomic.h: ditto.

* ext/io/wait/wait.c: ditto.

[ruby-dev:44693]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33521 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-24 14:57:08 +00:00
nobu 12c497dcf6 * hash.c (identhash): share with type_numhash.
* st.c (st_hashtype_num): rename from type_numhash.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-18 14:28:58 +00:00
drbrain 6f8f555d2f * hash.c (Init_Hash): Improve Hash documentation. Patch by Alvaro
Pereyra Rabanal.  [Ruby 1.9 - Bug #5405]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33406 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-04 20:57:07 +00:00
nobu 8e6e8e6288 * use RB_TYPE_P which is optimized for constant types, instead of
comparison with TYPE.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33357 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-29 11:07:45 +00:00
nobu 86bbfdadf3 * hash.c (recursive_hash): hash value of emptied hash should be
equal to an empty hash.  [ruby-core:38650]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32810 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-02 03:03:18 +00:00
drbrain b57a0d44f9 * hash.c: Document ENV
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32311 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-30 00:20:15 +00:00
drbrain 926301969f * math.c: Attach documentation for Math.
* object.c:  Document NIL, TRUE, FALSE.
	* io.c:  Improve grammar in ARGF comment.  Document STDIN/OUT/ERR.
	  Document ARGF global constant.
	* lib/rake:  Hide deprecated toplevel constants from RDoc (import from
	  rake trunk).
	* lib/thwait.rb:  Document ThWait.
	* lib/mathn.rb:  Hide Math redefinition from RDoc
	* lib/sync.rb:  Add a basic comment for Sync_m, Synchronizer_m, Sync,
	  Synchronizer.
	* parse.y:  Document SCRIPT_LINES__.
	* hash.c:  Document ENV class and global constant.
	* vm.c:  Document TOPLEVEL_BINDING.
	* version.c:  Document RUBY_* constants.
	* ruby.c:  Document DATA and ARGV.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32281 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-29 03:09:34 +00:00
naruse 145fccbd42 * hash.c (rb_hash_reject): add documentation that Hash#reject
without block returns enumerator.
  patched by Michael Edgar [Bug #4847] [ruby-core:36800]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-26 15:45:47 +00:00
akr 5ed8c08aa0 * eval.c, hash.c, load.c, proc.c, range.c, thread.c, time.c: don't
declare internal functions.

* internal.h, vm_core.h: declare internal functions.

* array.c: include internal.h.

* common.mk: update dependency for array.o.




git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32165 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-18 08:26:19 +00:00
akr e7996eb3cc * internal.h: declare internal functions here.
* node.h: declare NODE dependent internal functions here.

* iseq.h: declare rb_iseq_t dependent internal functions here.

* vm_core.h: declare rb_thread_t dependent internal functions here.

* bignum.c, class.c, compile.c, complex.c, cont.c, dir.c, encoding.c,
  enumerator.c, error.c, eval.c, file.c, gc.c, hash.c, inits.c, io.c,
  iseq.c, load.c, marshal.c, math.c, numeric.c, object.c, parse.y,
  proc.c, process.c, range.c, rational.c, re.c, ruby.c, string.c,
  thread.c, time.c, transcode.c, variable.c, vm.c,
  tool/compile_prelude.rb: don't declare internal functions declared
  in above headers.  include above headers if required.

  Note that rb_thread_mark() was declared as
  void rb_thread_mark(rb_thread_t *th) in cont.c but defined as
  void rb_thread_mark(void *ptr) in vm.c.  Now it is declared as
  the later in internal.h.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32156 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-17 22:43:38 +00:00
drbrain f6809f61d6 * hash.c (key_i): Change rdoc from "the first occurence" to "an
occurrence" since first occurrence is not a specification of
	  Hash#key.  [Ruby 1.9 - Bug #4760]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31878 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-31 22:35:59 +00:00
drbrain 317e2a5021 * hash.c: Improve documentation of Hash#key. Patch by Utkarsh
Kukreti.  [Ruby 1.9 - Bug #4760]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31705 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-22 23:37:03 +00:00
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
matz a5e227edfe * hash.c (rb_hash_hash): documentation fix. a patch from
Marc-Andre Lafortune.  [ruby-core:23943]

* object.c (rb_mod_cmp): ditto.

* range.c (range_eq): ditto.

* string.c (rb_str_partition, rb_str_rpartition): ditto.

* struct.c (rb_struct_s_def): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23930 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-01 21:20:44 +00:00
matz 33a8def1e1 * hash.c (rb_hash_reject_bang): always check frozen status.
[ruby-core:23715]

* hash.c (rb_hash_update): ditto.

* hash.c (rb_hash_reject_bang): call rb_hash_foreach() directly.

* hash.c (rb_hash_update_i): call st_insert() directly.

* hash.c (rb_hash_update_block_i): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23650 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-06-08 05:44:17 +00:00
nobu 2a6fb9690a * hash.c (Init_Hash): made #to_s an alias to #inspect to reduce
the result of recursive array.  a patch from ujihisa at
  [ruby-core:23601].  [ruby-dev:38555]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23605 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-05-29 08:08:25 +00:00
nobu 893349cadf * hash.c (rb_hash_inspect): rescurses with defined ID to get rid
of extra call.  [ruby-core:23601]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23604 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-05-29 01:04:34 +00:00
matz 844a6890c6 * st.c (st_insert2): new function with processing new key,
e.g. copy.

* hash.c (rb_hash_aset): use st_insert2() to reduce redundant
  st_lookup calls.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23594 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-05-27 15:56:14 +00:00