diff --git a/core/includes/common.inc b/core/includes/common.inc
index 19e0d59..61a4453 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -449,7 +449,7 @@ function drupal_get_query_array($query) {
   if (!empty($query)) {
     foreach (explode('&', $query) as $param) {
       $param = explode('=', $param);
-      $result[$param[0]] = isset($param[1]) ? rawurldecode($param[1]) : '';
+      $result[$param[0]] = isset($param[1]) ? rawurldecode($param[1]) : NULL;
     }
   }
   return $result;
diff --git a/core/modules/system/tests/common.test b/core/modules/system/tests/common.test
index b50daad..7f9287a 100644
--- a/core/modules/system/tests/common.test
+++ b/core/modules/system/tests/common.test
@@ -76,7 +76,7 @@ class CommonDrupalAlterTestCase extends WebTestBase {
  * url() calls module_implements(), which may issue a db query, which requires
  * inheriting from a web test case rather than a unit test case.
  */
-class CommonURLUnitTestCase extends WebTestBase {
+class CommonURLWebTestCase extends WebTestBase {
   public static function getInfo() {
     return array(
       'name' => 'URL generation tests',
@@ -281,6 +281,32 @@ class CommonURLUnitTestCase extends WebTestBase {
 }
 
 /**
+ * Tests for non-DB based URL generation functions.
+ */
+class CommonUrlUnitTestCase extends UnitTestBase {
+
+  public static function getInfo() {
+    return array(
+      'name' => 'URL generation tests',
+      'description' => 'Confirm that drupal_get_query_array() works correctly with various input.',
+      'group' => 'Common',
+    );
+  }
+
+  /**
+   * Tests drupal_get_query_array().
+   */
+  function testDrupalGetQueryArray() {
+    $this->assertEqual(drupal_get_query_array('foo=bar'), array('foo' => 'bar'), 'Simple value works as expected.');
+    $this->assertEqual(drupal_get_query_array('foo=1'), array('foo' => '1'), 'Numeric value works as expected.');
+    $this->assertEqual(drupal_get_query_array('foo=1&bar=baz'), array('foo' => '1', 'bar' => 'baz'), 'Multiple values are parsed as well.');
+    $this->assertEqual(drupal_get_query_array('foo='), array('foo' => ''), 'An empty value is set as an empty string.');
+    $this->assertEqual(drupal_get_query_array('foo'), array('foo' => NULL), 'No value is set as a null value.');
+  }
+
+}
+
+/**
  * Tests for check_plain(), filter_xss(), format_string(), and check_url().
  */
 class CommonXssUnitTestCase extends UnitTestBase {
