summaryrefslogtreecommitdiff
path: root/string.c
AgeCommit message (Collapse)Author
2021-04-13Make String#crypt ractor-safeNobuyoshi Nakada
2021-04-12Get rid of LONG_LONG redefinitionNobuyoshi Nakada
2021-03-22rb_enc_interned_str: handle autoloaded encodingsJean Boussier
If called with an autoloaded encoding that was not yet initialized, `rb_enc_interned_str` would crash with a NULL pointer exception. See: https://github.com/ruby/ruby/pull/4119#issuecomment-800189841 Notes: Merged: https://github.com/ruby/ruby/pull/4290
2021-02-20Make String#{strip,lstrip}{,!} strip leading NUL bytesJeremy Evans
The documentation already specifies that they strip whitespace and defines whitespace to include null. This wraps the new behavior in the appropriate guards in the specs, but does not specify behavior for previous versions, because this is a bug that could be backported. Fixes [Bug #17467] Notes: Merged: https://github.com/ruby/ruby/pull/4164
2021-02-12correct the result of casecmp? examples [ci skip]Sarun Rattanasiri
Notes: Merged: https://github.com/ruby/ruby/pull/4174 Merged-By: nobu <nobu@ruby-lang.org>
2021-02-11Merged too-short salt conditions instead of UNREACHABLE_RETURNNobuyoshi Nakada
2021-02-11Fix 404 linkS-H-GAMELINKS
Notes: Merged: https://github.com/ruby/ruby/pull/4169
2021-02-04Remove unsued str_new_shared function declarationS-H-GAMELINKS
Notes: Merged: https://github.com/ruby/ruby/pull/4151
2021-01-30Constified pointers in str_casecmpNobuyoshi Nakada
2021-01-26Fix broken link in RDoc for String (#4123)Burdette Lamar
Link was correct; its target was incorrect; now fixed. Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2021-01-22What's Here for String RDoc (#4093)Burdette Lamar
* What's Here for String RDoc Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2020-12-30Minor grammar fix in String#chomp documentationEric Schneider
Notes: Merged: https://github.com/ruby/ruby/pull/4013
2020-12-26Use `size_t` for `RSTRING_LEN` in String#countNobuyoshi Nakada
https://hackerone.com/reports/1042722 Notes: Merged: https://github.com/ruby/ruby/pull/4001
2020-12-21Add Symbol#name and freezing explanation to #to_szverok
Notes: Merged: https://github.com/ruby/ruby/pull/3966
2020-12-21Replaced magic numbers tr tableNobuyoshi Nakada
2020-12-18Use category: :deprecated in warnings that are related to deprecationJeremy Evans
Also document that both :deprecated and :experimental are supported :category option values. The locations where warnings were marked as deprecation warnings was previously reviewed by shyouhei. Comment a couple locations where deprecation warnings should probably be used but are not currently used because deprecation warning enablement has not occurred at the time they are called (RUBY_FREE_MIN, RUBY_HEAP_MIN_SLOTS, -K). Add assert_deprecated_warn to test assertions. Use this to simplify some tests, and fix failing tests after marking some warnings with deprecated category. Notes: Merged: https://github.com/ruby/ruby/pull/3917
2020-12-07tuning trial: newobj with current ecKoichi Sasada
Passing current ec can improve performance of newobj. This patch tries it for Array and String literals ([] and ''). Notes: Merged: https://github.com/ruby/ruby/pull/3842
2020-12-01should not use rb_str_modify(), tooKoichi Sasada
Same as 8247b8edde, should not use rb_str_modify() here. https://bugs.ruby-lang.org/issues/17343#change-88858 Notes: Merged: https://github.com/ruby/ruby/pull/3833
2020-11-30Fix rb_interned_str_* functions to not assume static stringsJean Boussier
Fixes [Feature #13381] When passed a `fake_str`, `register_fstring` would create new strings with `str_new_static`. That's not what was expected, and answer almost no use cases. Notes: Merged: https://github.com/ruby/ruby/pull/3786
2020-11-29Get rid of allocation when the capacity is smallNobuyoshi Nakada
2020-11-20Remove obsoleted str_new_emptyTakashi Kokubun
since 58325daae3beefda13ed100782cd19a89cc68771. ../string.c:1339:1: warning: ‘str_new_empty’ defined but not used [-Wunused-function] 1339 | str_new_empty(VALUE str) | ^~~~~~~~~~~~~
2020-11-20Make String methods return String instances when called on a subclass instanceJeremy Evans
This modifies the following String methods to return String instances instead of subclass instances: * String#* * String#capitalize * String#center * String#chomp * String#chop * String#delete * String#delete_prefix * String#delete_suffix * String#downcase * String#dump * String#each/#each_line * String#gsub * String#ljust * String#lstrip * String#partition * String#reverse * String#rjust * String#rpartition * String#rstrip * String#scrub * String#slice! * String#slice/#[] * String#split * String#squeeze * String#strip * String#sub * String#succ/#next * String#swapcase * String#tr * String#tr_s * String#upcase This also fixes a bug in String#swapcase where it would return the receiver instead of a copy of the receiver if the receiver was the empty string. Some string methods were left to return subclass instances: * String#+@ * String#-@ Both of these methods will return the receiver (subclass instance) in some cases, so it is best to keep the returned class consistent. Fixes [#10845] Notes: Merged: https://github.com/ruby/ruby/pull/3701
2020-11-17Expose the rb_interned_str_* family of functionsJean Boussier
Fixes [Feature #13381] Notes: Merged: https://github.com/ruby/ruby/pull/3586
2020-10-30Move variable closer to usageAlan Wu
2020-10-21Don't redefine #rb_intern over and over againStefan Stüben
Notes: Merged: https://github.com/ruby/ruby/pull/3589
2020-10-08Enhanced RDoc for String#insert (#3643)Burdette Lamar
* Enhanced RDoc for String#insert Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2020-09-30Enhanced RDoc for String#[] (#3607)Burdette Lamar
* Enhanced RDoc for String#[] Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2020-09-29Enhanced RDoc for String#upto (#3603)Burdette Lamar
* Enhanced RDoc for String#upto Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2020-09-28Enhanced RDoc for String#succ! (#3596)Burdette Lamar
* Enhanced RDoc for String#succ! Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2020-09-25Enhanced RDoc for String#succ (#3590)Burdette Lamar
* Enhanced RDoc for String#succ Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2020-09-24Enhanced RDoc for String#match? (#3576)Burdette Lamar
* Enhanced RDoc for String#match? Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2020-09-24Enhanced RDoc for String (#3574)Burdette Lamar
Methods: =~ match Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2020-09-24Enhanced RDoc for String (#3569)Burdette Lamar
Makes some methods doc compliant with https://github.com/ruby/ruby/blob/master/doc/method_documentation.rdoc. Also, other minor revisions to make more consistent. Methods: == === eql? <=> casecmp casecmp? index rindex Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2020-09-23Fix call-seq [ci skip]Kazuhiro NISHIYAMA
`encoding` can be not only an encoding name, but also an Encoding object. ``` s = String.new('foo', encoding: Encoding::US_ASCII) s.encoding # => #<Encoding:US-ASCII> ```
2020-09-22Enhanced RDoc for String (#3565)Burdette Lamar
Makes some methods doc compliant with https://github.com/ruby/ruby/blob/master/doc/method_documentation.rdoc. Also, other minor revisions to make more consistent. Methods: try_convert +string -string concat << prepend hash Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2020-09-21Comply with guide for method doc: string.c (#3528)Burdette Lamar
Methods: ::new #length #bytesize #empty? #+ #* #% Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2020-09-18sync fstring_table for deletionKoichi Sasada
Ractors can access this table simultaneously so we need to sync accesses. Notes: Merged: https://github.com/ruby/ruby/pull/3548
2020-09-15sync fstring poolKoichi Sasada
fstring pool should be sync with other Ractors. Notes: Merged: https://github.com/ruby/ruby/pull/3534
2020-09-11Let String#slice! return nil (#3533)Soutaro Matsumoto
Returns `nil` instead of an empty string when non-integer number is given (to make it 2.7 compatible). Notes: Merged-By: soutaro <matsumoto@soutaro.com>
2020-09-04Added Symbol#nameNobuyoshi Nakada
https://bugs.ruby-lang.org/issues/16150#change-87446 Notes: Merged: https://github.com/ruby/ruby/pull/3514 Merged-By: nobu <nobu@ruby-lang.org>
2020-08-20Partial compliance with doc/method_documentation.rdoc in string.c (#3436)Burdette Lamar
Removes references to *-convertible thingies. Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2020-08-19register_fstring: avoid duping the passed string when possibleJean Boussier
If the passed string is frozen, bare and not shared, then there is no need to duplicate it. Ref: 4ab69ebbd7cef8539f687e1f948845d076461dc6 Ref: https://bugs.ruby-lang.org/issues/11386 Notes: Merged: https://github.com/ruby/ruby/pull/3430
2020-08-15[DOC] fixed a missing markupNobuyoshi Nakada
2020-08-13rb_str_{index,rindex}_m: Handle /\K/ in patternKasumi Hanazuki
When the pattern Regexp given to String#index and String#rindex contain a /\K/ (lookbehind) operator, these methods return the position where the beginning of the lookbehind pattern matches, while they are expected to return the position where the \K matches. ``` # without patch "abcdbce".index(/b\Kc/) # => 1 "abcdbce".rindex(/b\Kc/) # => 4 ``` This patch fixes this problem by using BEG(0) instead of the return value of rb_reg_search. ``` # with patch "abcdbce".index(/b\Kc/) # => 2 "abcdbce".rindex(/b\Kc/) # => 5 ``` Fixes [Bug #17118] Notes: Merged: https://github.com/ruby/ruby/pull/3414
2020-08-13rb_str_{partition,rpartition}_m: Handle /\K/ in patternKasumi Hanazuki
When the pattern given to String#partition and String#rpartition contain a /\K/ (lookbehind) operator, the methods return strings sliced at incorrect positions. ``` # without patch "abcdbce".partition(/b\Kc/) # => ["a", "c", "cdbce"] "abcdbce".rpartition(/b\Kc/) # => ["abcd", "c", "ce"] ``` This patch fixes the problem by using BEG(0) instead of the return value of rb_reg_search. ``` # with patch "abcdbce".partition(/b\Kc/) # => ["ab", "c", "dbce"] "abcdbce".rpartition(/b\Kc/) # => ["abcdb", "c", "e"] ``` As a side-effect this patch makes String#partition 2x faster when the pattern is a costly Regexp by performing Regexp search only once, which was unexpectedly done twice in the original implementation. Fixes [Bug #17119] Notes: Merged: https://github.com/ruby/ruby/pull/3413
2020-08-12string.c(rb_str_split_m): Handle /\K/ correctlyKasumi Hanazuki
Use BEG(0) instead of the result of rb_reg_search to handle the cases when the separator Regexp contains /\K/ (lookbehind) operator. Fixes [Bug #17113] Notes: Merged: https://github.com/ruby/ruby/pull/3407
2020-08-10Removed non-ASCII code to suppress warnings by localized compilersNobuyoshi Nakada
2020-08-10Adjust indentNobuyoshi Nakada
2020-07-28Use https instead of httpKazuhiro NISHIYAMA
2020-06-29add UNREACHABLE_RETURN卜部昌平
Not every compilers understand that rb_raise does not return. When a function does not end with a return statement, such compilers can issue warnings. We would better tell them about reachabilities. Notes: Merged: https://github.com/ruby/ruby/pull/3247