fix #4150: pdb's up command didn't work for generators in post-mortem
diff --git a/Lib/bdb.py b/Lib/bdb.py
index d74415b..5288cc0 100644
--- a/Lib/bdb.py
+++ b/Lib/bdb.py
@@ -320,6 +320,8 @@
         while t is not None:
             stack.append((t.tb_frame, t.tb_lineno))
             t = t.tb_next
+        if f is None:
+            i = max(0, len(stack) - 1)
         return stack, i
 
     #
diff --git a/Lib/pdb.py b/Lib/pdb.py
index a7a3a18..4a080c7 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -1224,9 +1224,7 @@
 
     p = Pdb()
     p.reset()
-    while t.tb_next is not None:
-        t = t.tb_next
-    p.interaction(t.tb_frame, t)
+    p.interaction(None, t)
 
 def pm():
     post_mortem(sys.last_traceback)
@@ -1289,9 +1287,7 @@
             print "Uncaught exception. Entering post mortem debugging"
             print "Running 'cont' or 'step' will restart the program"
             t = sys.exc_info()[2]
-            while t.tb_next is not None:
-                t = t.tb_next
-            pdb.interaction(t.tb_frame,t)
+            pdb.interaction(None, t)
             print "Post mortem debugger finished. The "+mainpyfile+" will be restarted"
 
 
diff --git a/Misc/NEWS b/Misc/NEWS
index 4755db6..0e726ea 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -24,6 +24,9 @@
 Library
 -------
 
+- Issue #4150: Pdb's "up" command now works for generator frames in post-mortem
+  debugging.
+
 - Issue #4092: Return ArgInfo as promised in the documentation from
   inspect.getargvalues.