• Pierre-Marie de Rodat's avatar
    Fix use of a dangling pointer for Python breakpoint objects · f4952523
    Pierre-Marie de Rodat authored
    When a Python script tries to create a breakpoint but fails to do so,
    gdb.Breakpoint.__init__ raises an exception and the breakpoint does not
    exist anymore in the Python interpreter. However, GDB still keeps a
    reference to the Python object to be used for a later hook, which is
    wrong.
    
    This commit adds the necessary cleanup code so that there is no stale
    reference to this Python object. It also adds a new testcase to
    reproduce the bug and check the fix.
    
    2016-06-25  Pierre-Marie de Rodat  <derodat@adacore.com>
    
    gdb/
    	* python/py-breakpoint.c (bppy_init): Clear bppy_pending_object
    	when there is an error during the breakpoint creation.
    
    gdb/testsuite
    
    	* gdb.python/py-breakpoint-create-fail.c,
    	gdb.python/py-breakpoint-create-fail.exp,
    	gdb.python/py-breakpoint-create-fail.py: New testcase.
    f4952523