]> granicus.if.org Git - python/commitdiff
Issue #1786 (by myself): pdb should use its own stdin/stdout around an
authorGuido van Rossum <guido@python.org>
Tue, 15 Jan 2008 17:59:29 +0000 (17:59 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 15 Jan 2008 17:59:29 +0000 (17:59 +0000)
exec call and when creating a recursive instance.

Lib/pdb.py
Misc/NEWS

index 468b1d321dffa935ee3b9076a1c99f09b73bf89c..e2ace87a403793e9a40e787efced517311251c8a 100755 (executable)
@@ -199,7 +199,13 @@ class Pdb(bdb.Bdb, cmd.Cmd):
         globals = self.curframe.f_globals
         try:
             code = compile(line + '\n', '<stdin>', 'single')
-            exec code in globals, locals
+            try:
+                sys.stdin = self.stdin
+                sys.stdout = self.stdout
+                exec code in globals, locals
+            finally:
+                sys.stdout = save_stdout
+                sys.stdin = save_stdin
         except:
             t, v = sys.exc_info()[:2]
             if type(t) == type(''):
@@ -659,7 +665,7 @@ class Pdb(bdb.Bdb, cmd.Cmd):
         sys.settrace(None)
         globals = self.curframe.f_globals
         locals = self.curframe.f_locals
-        p = Pdb()
+        p = Pdb(self.completekey, self.stdin, self.stdout)
         p.prompt = "(%s) " % self.prompt.strip()
         print >>self.stdout, "ENTERING RECURSIVE DEBUGGER"
         sys.call_tracing(p.run, (arg, globals, locals))
index 32dab1059cdd6c40e0e23fc9c2151d0d2d9b98c7..0be1934f86230c52ad9a2ae4d3a251989770779a 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -358,11 +358,15 @@ Core and builtins
 
 - Bug #1664966: Fix crash in exec if Unicode filename can't be decoded.
 
-- Issue #1537: Changed GeneratorExit's base class from Exception to BaseException.
+- Issue #1537: Changed GeneratorExit's base class from Exception to
+  BaseException.
 
 Library
 -------
 
+- Issue #1786: pdb should use its own stdin/stdout around an exec call
+  and when creating a recursive instance.
+
 - Issue #1698398 Zipfile.printdir() crashed because the format string
   expected a tuple type of length six instead of time.struct_time object.