about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2011-11-18 22:49:55 +0000
committerEric Wong <normalperson@yhbt.net>2011-11-18 22:49:55 +0000
commite6edebe4288c98827e723d75fe9fea4c1a0b013f (patch)
treeb6c1203db47f2d6bbb121f6c8289c9e71226e69b
parentb4b3ec9ac07dad1aab6da1d3ba9c26c4b7959dc2 (diff)
downloadmogilefs-client-e6edebe4288c98827e723d75fe9fea4c1a0b013f.tar.gz
I never learned to read Hash[] well.  Also, String#freeze on
keys to prevent Ruby from calling String#dup for us.
-rw-r--r--lib/mogilefs/backend.rb9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/mogilefs/backend.rb b/lib/mogilefs/backend.rb
index b754bbc..454685a 100644
--- a/lib/mogilefs/backend.rb
+++ b/lib/mogilefs/backend.rb
@@ -372,9 +372,12 @@ class MogileFS::Backend
 
   # Turns a url params string into a Hash.
   def url_decode(str) # :nodoc:
-    Hash[*(str.split(/&/).map! { |pair|
-      pair.split(/=/, 2).map! { |x| url_unescape(x) }
-    } ).flatten]
+    rv = {}
+    str.split(/&/).each do |pair|
+      k, v = pair.split(/=/, 2).map! { |x| url_unescape(x) }
+      rv[k.freeze] = v
+    end
+    rv
   end
 
   # :stopdoc: