#8015: fix crash when entering an empty line for breakpoint commands.  Also restore environment properly when an exception occurs during the definition of commands.
diff --git a/Lib/pdb.py b/Lib/pdb.py
index cedd17e..e62f913 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -509,8 +509,10 @@
             return self.handle_command_def(line)
 
     def handle_command_def(self,line):
-        """ Handles one command line during command list definition. """
+        """Handles one command line during command list definition."""
         cmd, arg, line = self.parseline(line)
+        if not cmd:
+            return
         if cmd == 'silent':
             self.commands_silent[self.commands_bnum] = True
             return # continue to handle other cmd def in the cmd list
@@ -518,7 +520,7 @@
             self.cmdqueue = []
             return 1 # end of cmd list
         cmdlist = self.commands[self.commands_bnum]
-        if (arg):
+        if arg:
             cmdlist.append(cmd+' '+arg)
         else:
             cmdlist.append(cmd)
@@ -561,9 +563,11 @@
         prompt_back = self.prompt
         self.prompt = '(com) '
         self.commands_defining = True
-        self.cmdloop()
-        self.commands_defining = False
-        self.prompt = prompt_back
+        try:
+            self.cmdloop()
+        finally:
+            self.commands_defining = False
+            self.prompt = prompt_back
 
     def do_break(self, arg, temporary = 0):
         # break [ ([filename:]lineno | function) [, "condition"] ]
diff --git a/Misc/NEWS b/Misc/NEWS
index a68cc73..5c61594 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -475,6 +475,9 @@
 Library
 -------
 
+- Issue #8015: In pdb, do not crash when an empty line is entered as
+  a breakpoint command.
+
 - In pdb, allow giving a line number to the "until" command.
 
 - Issue #1437051: For pdb, allow "continue" and related commands in