Skip to content

Commit

Permalink
merge revision(s) 62743: [Backport #16687]
Browse files Browse the repository at this point in the history
	Fix FrozenError on `Ripper.slice`

	Currently `Ripper.slice` raises a FrozenError

	```ruby
	require 'ripper'
	p Ripper.slice('foo', 'ident')
	```

	```
	/path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:193:in `concat': can't modify frozen String (FrozenError)
		from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:193:in `block in compile'
		from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:190:in `scan'
		from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:190:in `compile'
		from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:169:in `initialize'
		from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:151:in `new'
		from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:151:in `token_match'
		from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:144:in `slice'
		from /tmp/tmp.kb4cnhvum2/test.rb:2:in `<main>'
	```

	This patch will fix the problem.

	[Fix GH-1837]

	From: Masataka Pocke Kuwabara <kuwabara@pocke.me>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_5@67871 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
unak committed Mar 30, 2020
1 parent 8580c09 commit 209f345
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 2 deletions.
2 changes: 1 addition & 1 deletion ext/ripper/lib/ripper/lexer.rb
Expand Up @@ -192,7 +192,7 @@ def compile(pattern)
if m = /[^\w\s$()\[\]{}?*+\.]/.match(pattern)
raise CompileError, "invalid char in pattern: #{m[0].inspect}"
end
buf = ''
buf = +''
pattern.scan(/(?:\w+|\$\(|[()\[\]\{\}?*+\.]+)/) do |tok|
case tok
when /\w/
Expand Down
2 changes: 1 addition & 1 deletion version.h
@@ -1,6 +1,6 @@
#define RUBY_VERSION "2.5.8"
#define RUBY_RELEASE_DATE "2020-03-31"
#define RUBY_PATCHLEVEL 220
#define RUBY_PATCHLEVEL 221

#define RUBY_RELEASE_YEAR 2020
#define RUBY_RELEASE_MONTH 3
Expand Down

0 comments on commit 209f345

Please sign in to comment.