* string.c (rb_str_modify_expand): enable capacity and disable
assocation with packed objects when setting capa, so that
pack("p") string fails to unpack properly after modified.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@44830 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
test/ruby/test_symbol.rb: tests for [Bug #8531]
* include/ruby/ruby.h, vm_eval.c (rb_funcall_with_block):
new function to invoke a method with a block passed
as an argument.
* string.c (sym_call): use the above function to avoid
a block sharing. [ruby-dev:47438] [Bug #8531]
* vm_insnhelper.c (vm_yield_with_cfunc): don't set block
in the frame.
* test/ruby/test_symbol.rb (TestSymbol#test_block_given_to_proc):
run related tests.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@41653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* string.c (rb_str_concat): set array element after definition
to fix compile error with Fujitsu C Compiler 5.6 on Solaris 10
on Sparc. [Bug #5878] [ruby-dev:45123]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@40229 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* random.c (rb_memhash): use siphash.
* siphash.c (sip_init_state): use union to suppress warnings by gcc
4.7.
* siphash.h: include inttypes.h only when HAVE_INTTYPES_H is defined.
* siphash.h: check configure macros before include newer headers.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@37600 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* string.c (rb_enc_cr_str_buf_cat): don't reset coderange as unknown.
the condition 'ptr_a8 && str_cr != ENC_CODERANGE_7BIT' means not
unknown, str is also ASCII-8BIT because str_encindex == ptr_encindex,
and nont (str_cr == ENC_CODERANGE_UNKNOWN) and
str_cr != ENC_CODERANGE_7BIT means str_cr is valid because ASCII-8BIT
can't be broken. [ruby-dev:45688] [Bug #6509]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@35866 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* string.c (str_new_empty): should copy also the encoding as an
empty substring. [ruby-dev:45441][Bug #6206]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@35178 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* numeric.c (rb_enc_uint_char): raise RangeError when added codepoint
is invalid. [Feature #5855] [Bug #5863] [Bug #5864]
* string.c (rb_str_concat): ditto.
* string.c (rb_str_concat): set encoding as ASCII-8BIT when the string
is US-ASCII and the argument is an integer greater than 127.
* regenc.c (onigenc_mb2_code_to_mbclen): rearrange error code.
* enc/euc_jp.c (code_to_mbclen): ditto.
* enc/shift_jis.c (code_to_mbclen): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@34501 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
rb_str_aref_m with a range. It returns nil when the beginning of
the range is greater than the end of the string rather than the range.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31962 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
String#end_with?. fixes#4652
patched by Andrew Grimm <andrew.j.grimm at gmail.com>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31493 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
environment variables. based on a patch from funny-falcon at
https://gist.github.com/856296, but honors safe level.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31044 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
original encoding. this also fixes the encoding when the result
shares internal string. [ruby-core:35376]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30994 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
tr is inverse mode, and a character doesn't much the table, the
character should be replaced by last replacement. Bug #4449
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30977 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
ASCII-8BIT receivers.
* string.c (str_gsub): set initial encoding of the buffer as the
same of the receiver. [ruby-core:35141]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30876 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
it doesn't match. patched by Andrei Kulakov [ruby-core:34562]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30654 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* string.c (rb_str_substr): get rid of measure the length always
to improve performance for huge string.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
when a UTF-16/32 (not BE/LE) string does not have a BOM.
Unicode and some RFCs say that a string labeld as UTF-16/32
doesn't have a BOM, it should be considered big endian.
But many Windows programs generates little endian UTF-16
strings without a BOM. So String#inspect treats a string
labeled UTF-16/32 withaout a BOM as a dummy encoding string.
patched by Martin Duerst. [ruby-core:33461]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29984 b2dd03c8-39d4-4d8f-98ff-823fe69b080e