Skip to content

Commit 18ecdb1

Browse files
authored
Merge pull request rails#44732 from pixeltrix/refactor-path-pattern-offsets
Refactor ActionDispatch::Journey::Path::Pattern#offsets method to avoid race condition
2 parents 752fa77 + 79b6dcb commit 18ecdb1

File tree

1 file changed

+14
-14
lines changed
  • actionpack/lib/action_dispatch/journey/path

1 file changed

+14
-14
lines changed

actionpack/lib/action_dispatch/journey/path/pattern.rb

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -183,22 +183,22 @@ def regexp_visitor
183183
end
184184

185185
def offsets
186-
return @offsets if @offsets
187-
188-
@offsets = [0]
189-
190-
spec.find_all(&:symbol?).each do |node|
191-
node = node.to_sym
192-
193-
if @requirements.key?(node)
194-
re = /#{Regexp.union(@requirements[node])}|/
195-
@offsets.push((re.match("").length - 1) + @offsets.last)
196-
else
197-
@offsets << @offsets.last
186+
@offsets ||= begin
187+
offsets = [0]
188+
189+
spec.find_all(&:symbol?).each do |node|
190+
node = node.to_sym
191+
192+
if @requirements.key?(node)
193+
re = /#{Regexp.union(@requirements[node])}|/
194+
offsets.push((re.match("").length - 1) + offsets.last)
195+
else
196+
offsets << offsets.last
197+
end
198198
end
199-
end
200199

201-
@offsets
200+
offsets
201+
end
202202
end
203203
end
204204
end

0 commit comments

Comments
 (0)