diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py
index 1585586..58ce3b5 100644
--- a/Lib/test/pickletester.py
+++ b/Lib/test/pickletester.py
@@ -432,6 +432,16 @@
             self.assertEqual(len(x), 1)
             self.assert_(x is x[0])
 
+    def test_recursive_tuple(self):
+        t = ([],)
+        t[0].append(t)
+        for proto in protocols:
+            s = self.dumps(t, proto)
+            x = self.loads(s)
+            self.assertEqual(len(x), 1)
+            self.assertEqual(len(x[0]), 1)
+            self.assert_(x is x[0][0])
+
     def test_recursive_dict(self):
         d = {}
         d[1] = d
diff --git a/Modules/_pickle.c b/Modules/_pickle.c
index 6f33c25..3ad55b5 100644
--- a/Modules/_pickle.c
+++ b/Modules/_pickle.c
@@ -3639,25 +3639,24 @@
 static int
 load_pop(UnpicklerObject *self)
 {
-    int len;
-
-    if ((len = self->stack->length) <= 0)
-        return stack_underflow();
+    int len = self->stack->length;
 
     /* Note that we split the (pickle.py) stack into two stacks,
      * an object stack and a mark stack. We have to be clever and
      * pop the right one. We do this by looking at the top of the
-     * mark stack.
+     * mark stack first, and only signalling a stack underflow if
+     * the object stack is empty and the mark stack doesn't match
+     * our expectations.
      */
-
-    if ((self->num_marks > 0) && (self->marks[self->num_marks - 1] == len))
+    if (self->num_marks > 0 && self->marks[self->num_marks - 1] == len) {
         self->num_marks--;
-    else {
+    } else if (len >= 0) {
         len--;
         Py_DECREF(self->stack->data[len]);
         self->stack->length = len;
+    } else {
+        return stack_underflow();
     }
-
     return 0;
 }
 
