diff options
author | Jamis Buck <jamis@37signals.com> | 2006-06-07 16:27:14 +0000 |
---|---|---|
committer | Jamis Buck <jamis@37signals.com> | 2006-06-07 16:27:14 +0000 |
commit | 816d67b104f9ea59cd0ffaccbcc250b66b7905d0 (patch) | |
tree | 42f998e62d9cc71635898c06d4bf4a37880d95e9 /actionpack/lib/action_controller/routing.rb | |
parent | ae7029ddd1fe11890479df119d0f5996c40c80de (diff) | |
download | rails-816d67b104f9ea59cd0ffaccbcc250b66b7905d0.tar.gz rails-816d67b104f9ea59cd0ffaccbcc250b66b7905d0.tar.bz2 rails-816d67b104f9ea59cd0ffaccbcc250b66b7905d0.zip |
Make sure passed routing options are not mutated by routing code. (closes #5314)
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4444 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack/lib/action_controller/routing.rb')
-rw-r--r-- | actionpack/lib/action_controller/routing.rb | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/actionpack/lib/action_controller/routing.rb b/actionpack/lib/action_controller/routing.rb index 14921c3ac0..8638a1afb2 100644 --- a/actionpack/lib/action_controller/routing.rb +++ b/actionpack/lib/action_controller/routing.rb @@ -670,9 +670,10 @@ module ActionController # segments are passed alongside in order to distinguish between default values # and requirements. def divide_route_options(segments, options) - requirements = options.delete(:requirements) || {} - defaults = options.delete(:defaults) || {} - conditions = options.delete(:conditions) || {} + options = options.dup + requirements = (options.delete(:requirements) || {}).dup + defaults = (options.delete(:defaults) || {}).dup + conditions = (options.delete(:conditions) || {}).dup path_keys = segments.collect { |segment| segment.key if segment.respond_to?(:key) }.compact options.each do |key, value| @@ -1088,4 +1089,4 @@ module ActionController Routes = RouteSet.new end -end
\ No newline at end of file +end |