aboutsummaryrefslogtreecommitdiffstats
path: root/re.c
Commit message (Collapse)AuthorAgeFilesLines
* Adding links to literals and Kernel (#5192)Burdette Lamar2021-12-031-0/+4
| | | | * Adding links to literals and Kernel
* Using NIL_P macro instead of `== Qnil`S.H2021-10-031-5/+5
|
* Avoid race condition in Regexp#matchJeremy Evans2021-10-011-27/+19
| | | | | | | | | | | | | | | | | | | | | | | | In certain conditions, Regexp#match could return a MatchData with missing captures. This seems to require at the least, multiple threads calling a method that calls the same block/proc/lambda which calls Regexp#match. The race condition happens because the MatchData is passed from indirectly via the backref, and other threads can modify the backref. Fix the issue by: 1. Not reusing the existing MatchData from the backref, and always allocating a new MatchData. 2. Passing the MatchData directly to the caller using a VALUE*, instead of indirectly through the backref. It's likely that variants of this issue exist for other Regexp methods. Anywhere that MatchData is passed implicitly through the backref is probably vulnerable to this issue. Fixes [Bug #17507]
* [Feature #18172] Add MatchData#match_lengthNobuyoshi Nakada2021-09-161-0/+37
| | | | | The method to return the length of the matched substring corresponding to the given argument.
* [Feature #18172] Add MatchData#matchNobuyoshi Nakada2021-09-161-0/+34
| | | | | The method to return the single matched substring corresponding to the given argument.
* Refactor and Using RBOOL macroS.H2021-09-151-6/+2
|
* Extract backref_number_checkNobuyoshi Nakada2021-09-121-6/+10
|
* Preserve the encoding of the argument in IndexError [Bug #18160]Nobuyoshi Nakada2021-09-121-10/+10
|
* Show default argument explicitly for Rexexp#match? [ci skip]Martin Dürst2021-09-011-2/+2
|
* Fix minor grammar issue in documentation of Regexp#match? [ci skip]Martin Dürst2021-09-011-1/+1
|
* Using RBOOL macroS.H2021-08-021-6/+2
|
* Warn more duplicate literal hash keysNobuyoshi Nakada2021-06-031-2/+2
| | | | | Following non-special_const literals: * T_REGEXP
* Add static modifier to C function in re.c (#3153)S.H2021-06-011-2/+2
| | | | | * add static modifier for rb_reg_eqq func * add static modifier for rb_check_regexp_type func
* [DOC] {Array,MatchData}#values_at understand ranges [ci skip]Nobuyoshi Nakada2021-02-071-0/+1
|
* [DOC] Fix grammar: "is same as" -> "is the same as"Marcus Stollsteimer2021-01-051-1/+1
|
* Use category: :deprecated in warnings that are related to deprecationJeremy Evans2020-12-181-3/+3
| | | | | | | | | | | | | | | | | 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.
* [Feature #17136] Remove special behavior from $KCODENobuyoshi Nakada2020-11-281-15/+0
|
* freeze dynamic regexp literalsKoichi Sasada2020-10-271-1/+3
| | | | | Regexp literals are frozen, and also dynamically comppiled Regexp literals (/#{expr}/) are frozen.
* Some global variables can be accessed from ractorsKoichi Sasada2020-10-201-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some global variables should be used from non-main Ractors. [Bug #17268] ```ruby # ractor-local (derived from created ractor): debug '$DEBUG' => $DEBUG, '$-d' => $-d, # ractor-local (derived from created ractor): verbose '$VERBOSE' => $VERBOSE, '$-w' => $-w, '$-W' => $-W, '$-v' => $-v, # process-local (readonly): other commandline parameters '$-p' => $-p, '$-l' => $-l, '$-a' => $-a, # process-local (readonly): getpid '$$' => $$, # thread local: process result '$?' => $?, # scope local: match '$~' => $~.inspect, '$&' => $&, '$`' => $`, '$\'' => $', '$+' => $+, '$1' => $1, # scope local: last line '$_' => $_, # scope local: last backtrace '$@' => $@, '$!' => $!, # ractor local: stdin, out, err '$stdin' => $stdin.inspect, '$stdout' => $stdout.inspect, '$stderr' => $stderr.inspect, ```
* Try to fix compile error on windowsKazuhiro NISHIYAMA2020-08-281-1/+1
| | | | | | | | | | | | | | | | | | | | | https://github.com/ruby/ruby/runs/1041040167?check_suite_focus=true#step:11:177 ``` compiling ../src/re.c re.c ../src/re.c(317): error C2057: expected constant expression ../src/re.c(317): error C2466: cannot allocate an array of constant size 0 ../src/re.c(467): error C2057: expected constant expression ../src/re.c(467): error C2466: cannot allocate an array of constant size 0 ../src/re.c(467): error C2133: 'opts': unknown size ../src/re.c(559): error C2057: expected constant expression ../src/re.c(559): error C2466: cannot allocate an array of constant size 0 ../src/re.c(559): error C2133: 'optbuf': unknown size ../src/re.c(673): error C2057: expected constant expression ../src/re.c(673): error C2466: cannot allocate an array of constant size 0 ../src/re.c(673): error C2133: 'opts': unknown size NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.27.29110\bin\HostX64\x64\cl.EXE"' : return code '0x2' Stop. ```
* Named the magic number for regexp option buffer sizeNobuyoshi Nakada2020-08-281-4/+6
| | | | In `rb_enc_reg_error_desc`, no longer kcode option is added.
* RSTRING_LEN was not usedNobuyoshi Nakada2020-08-141-3/+1
|
* re.c: prevent "warning: variable 'n' set but not used"Yusuke Endoh2020-08-141-1/+1
| | | | by adding MAYBE_UNUSED.
* Replace repeated RSTRING_PTR and RSTRING_LEN with RSTRING_GETMEMNobuyoshi Nakada2020-08-131-15/+28
| | | | | As now RSTRING_PTR and RSTRING_LEN are functions, they very bother stepping in/out during debugging.
* sed -i 's|ruby/impl|ruby/internal|'卜部昌平2020-05-111-1/+1
| | | | To fix build failures.
* sed -i s|ruby/3|ruby/impl|g卜部昌平2020-05-111-1/+1
| | | | This shall fix compile errors.
* Add {Regexp,String}#match with block to call-seq [ci skip]Kazuhiro NISHIYAMA2020-04-141-2/+2
|
* Merge pull request #2991 from shyouhei/ruby.h卜部昌平2020-04-081-2/+2
| | | Split ruby.h
* [DOC] get rid of parsing as TIDYLINK unintentionallyNobuyoshi Nakada2020-04-071-3/+3
|
* `Regexp` in `MatchData` can be `nil`Nobuyoshi Nakada2020-01-161-0/+1
| | | | | | | `String#sub` with a string pattern defers creating a `Regexp` until `MatchData#regexp` creates a `Regexp` from the matched string. `Regexp#last_match(group_name)` accessed its content without creating the `Regexp` though. [Bug #16508]
* Freeze Regexp literalsJean Boussier2020-01-151-0/+1
| | | | | | | [Feature #8948] [Feature #16377] Since Regexp literals always reference the same instance, allowing to mutate them can lead to state leak.
* decouple internal.h headers卜部昌平2019-12-261-4/+11
| | | | | | | | | | | | | | | | | | Saves comitters' daily life by avoid #include-ing everything from internal.h to make each file do so instead. This would significantly speed up incremental builds. We take the following inclusion order in this changeset: 1. "ruby/config.h", where _GNU_SOURCE is defined (must be the very first thing among everything). 2. RUBY_EXTCONF_H if any. 3. Standard C headers, sorted alphabetically. 4. Other system headers, maybe guarded by #ifdef 5. Everything else, sorted alphabetically. Exceptions are those win32-related headers, which tend not be self- containing (headers have inclusion order dependencies).
* Revert "Regexp#match{?} with nil raises TypeError as String, Symbol (#1506)"NARUSE, Yui2019-12-041-1/+1
| | | | | This reverts commit 2a22a6b2d8465934e75520a7fdcf522d50890caf. Revert [Feature #13083]
* Revert "Revert nil error and adding deprecation message"NARUSE, Yui2019-12-041-7/+1
| | | | This reverts commit 452bee3ee8d68059fabd9b1c7a75661b14e3933e.
* Revert "Improve warning message"NARUSE, Yui2019-12-041-2/+2
| | | | This reverts commit 31110d820cc1258cbc84b46ecc65b254c7d5529a.
* Deprecate taint/trust and related methods, and make the methods no-opsJeremy Evans2019-11-181-25/+0
| | | | | | This removes the related tests, and puts the related specs behind version guards. This affects all code in lib, including some libraries that may want to support older versions of Ruby.
* Undefine MatchData.allocate [Feature #16294]Nobuyoshi Nakada2019-11-061-0/+1
|
* Improve warning messageKenichi Kamiya2019-11-031-2/+2
| | | | https://github.com/ruby/ruby/pull/2637#discussion_r341812475
* Revert nil error and adding deprecation messageKenichi Kamiya2019-11-031-1/+7
|
* Mention correct class name in uninitialized errorAlan Wu2019-11-011-1/+1
| | | | I think this meant to mention `MatchData`? This is a breaking change, but should be a minor one.
* Regexp#match{?} with nil raises TypeError as String, Symbol (#1506)Kenichi Kamiya2019-10-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | * {String|Symbol}#match{?} with nil returns falsy To improve consistency with Regexp#match{?} * String#match(nil) returns `nil` instead of TypeError * String#match?(nil) returns `false` instead of TypeError * Symbol#match(nil) returns `nil` instead of TypeError * Symbol#match?(nil) returns `false` instead of TypeError * Prefer exception * Follow empty ENV * Drop outdated specs * Write ruby/spec for above https://github.com/ruby/ruby/pull/1506/files#r183242981 * Fix merge miss
* re.c (match_set_string): add a check for memory allocationYusuke Endoh2019-10-121-1/+2
| | | | Found by Coverity Scan
* drop-in type check for rb_define_singleton_method卜部昌平2019-08-291-1/+1
| | | | | | We can check the function pointer passed to rb_define_singleton_method like how we do so in rb_define_method. Doing so revealed many arity mismatches.
* delete `$` sign from C identifiers卜部昌平2019-08-271-2/+2
| | | | | They lack portability. See also https://travis-ci.org/shyouhei/ruby/jobs/577164015
* rb_define_hooked_variable now free from ANYARGS卜部昌平2019-08-271-10/+16
| | | | | | | | | After 5e86b005c0f2ef30df2f9906c7e2f3abefe286a2, I now think ANYARGS is dangerous and should be extinct. This commit uses rb_gvar_getter_t / rb_gvar_setter_t for rb_define_hooked_variable / rb_define_virtual_variable which revealed lots of function prototype inconsistencies. Some of them were literally decades old, going back to dda5dc00cff334cac373096d444a0fd59e716124.
* Reuse match dataNobuyoshi Nakada2019-07-281-0/+6
| | | | * string.c (rb_str_split_m): reuse occupied match data. [Bug #16024]
* Document encoding of string returned by Regexp.quote [ci skip]Jeremy Evans2019-07-221-2/+2
| | | | | | | | | Also, remove documentation about returning self, which makes no sense as self would be the Regexp class. It could be interpreted as return the argument if no changes were made, but that hasn't been the behavior at least since 1.8.7 (and probably before). Fixes [Bug #10239]
* Remove member char_offset_updated from struct rmatch as member ↵Lourens Naudé2019-04-241-12/+2
| | | | char_offset_num_allocated can serve the same purpose as that predicate
* [DOC] fix markups [ci skip]nobu2019-03-281-41/+41
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67354 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* re.c: [DOC] fix typosstomar2018-12-131-3/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66387 b2dd03c8-39d4-4d8f-98ff-823fe69b080e