diff --git a/core/lib/Drupal/Core/TypedData/ItemList.php b/core/lib/Drupal/Core/TypedData/ItemList.php
index 9b39e83..e6589ca 100644
--- a/core/lib/Drupal/Core/TypedData/ItemList.php
+++ b/core/lib/Drupal/Core/TypedData/ItemList.php
@@ -43,7 +43,7 @@ public function getValue() {
    */
   public function setValue($values, $notify = TRUE) {
     if (!isset($values) || $values === array()) {
-      $this->list = $values;
+      $this->list = array();
     }
     else {
       if (!is_array($values)) {
diff --git a/core/modules/system/lib/Drupal/system/Tests/TypedData/TypedDataTest.php b/core/modules/system/lib/Drupal/system/Tests/TypedData/TypedDataTest.php
index c8e3cac..8e5d5c4 100644
--- a/core/modules/system/lib/Drupal/system/Tests/TypedData/TypedDataTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/TypedData/TypedDataTest.php
@@ -350,11 +350,10 @@ public function testTypedDataLists() {
     $clone->setValue(array());
     $this->assertTrue($clone->isEmpty());
 
-    // Make sure the difference between NULL (not set) and an empty array is
-    // kept.
+    // Make sure that resetting the value using NULL results in an empty array.
     $clone->setValue(array());
     $typed_data->setValue(NULL);
-    $this->assertNull($typed_data->getValue());
+    $this->assertIdentical($typed_data->getValue(), array());
     $this->assertIdentical($clone->getValue(), array());
 
     // Test dealing with NULL items.
