diff --git a/feedparser/mixin.py b/feedparser/mixin.py
index 3acee1b10..15e32c00c 100644
--- a/feedparser/mixin.py
+++ b/feedparser/mixin.py
@@ -631,9 +631,18 @@ def pop(self, element, strip_whitespace=1):
old_value_depth = self.property_depth_map.setdefault(
self.entries[-1], {}
).get(element)
- if old_value_depth is None or self.depth <= old_value_depth:
- self.property_depth_map[self.entries[-1]][element] = self.depth
- self.entries[-1][element] = output
+ self.property_depth_map[self.entries[-1]][element] = self.depth
+ # Legacy elements are squashed to a singel item
+ legacy_elements = ["title", "summary", "author", "id"]
+ if element in self.entries[-1] and element not in legacy_elements:
+ previous_output = self.entries[-1][element]
+ if not isinstance(previous_output, list):
+ previous_output = [previous_output]
+ previous_output.append(output)
+ self.entries[-1][element] = previous_output
+ else:
+ if old_value_depth is None or self.depth <= old_value_depth:
+ self.entries[-1][element] = output
if self.incontent:
contentparams = copy.deepcopy(self.contentparams)
contentparams["value"] = output
diff --git a/tests/wellformed/namespace/multiple-elements-with-same-key.xml b/tests/wellformed/namespace/multiple-elements-with-same-key.xml
new file mode 100644
index 000000000..c144342e8
--- /dev/null
+++ b/tests/wellformed/namespace/multiple-elements-with-same-key.xml
@@ -0,0 +1,10 @@
+
+
+ -
+ foo
+ bar
+
+
diff --git a/tests/wellformed/node_precedence/atom10_arbitrary_element.xml b/tests/wellformed/node_precedence/atom10_arbitrary_element.xml
index 58598dacc..a163424c8 100644
--- a/tests/wellformed/node_precedence/atom10_arbitrary_element.xml
+++ b/tests/wellformed/node_precedence/atom10_arbitrary_element.xml
@@ -1,18 +1,18 @@
Correct Value
- Incorrect Value
+ Incorrect Value
- Incorrect Value
+ Incorrect Value
Correct Value
-
\ No newline at end of file
+