merge revision(s) r43942,r43957,r43975: [Backport #9187]

	* hash.c (rb_hash_rehash): fix to free new st_table when exception
	  is raised in do_hash(). [Bug #9187]

	* hash.c (rb_hash_rehash): make temporary st_table under the control
	  of GC. [Bug #9187]

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

	* array.c (rb_hash_rehash): use hash_alloc() instead of rb_hash_new().
	  [Bug #9187]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@45011 b2dd03c8-39d4-4d8f-98ff-823fe69b080e