mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-12-19 01:19:41 +08:00
gdb/python: missing PyObject_IsTrue error check in micmdpy_set_installed
Like the previous commit, I discovered that in micmdpy_set_installed we were calling PyObject_IsTrue, but not checking for a possible error value being returned. The micmdpy_set_installed function implements the gdb.MICommand.installed attribute, and the documentation indicates that this attribute should only be assigned a bool: This attribute is read-write, setting this attribute to 'False' will uninstall the command, removing it from the set of available commands. Setting this attribute to 'True' will install the command for use. So I propose that instead of using PyObject_IsTrue we use PyBool_Check, and if the new value fails this check we raise an error. We can then compare the new value to Py_True directly instead of calling PyObject_IsTrue. This is a potentially breaking change to the Python API, but hopefully this will not impact too many people, and the fix is pretty easy (switch to using a bool). I've added a NEWS entry to draw attention to this change. Approved-By: Tom Tromey <tom@tromey.com>
This commit is contained in:
@@ -233,6 +233,21 @@ mi_gdb_test "-abc str" \
|
||||
"\\^error,msg=\"Undefined MI command: abc\",code=\"undefined-command\"" \
|
||||
"-abc str, but now the command is gone"
|
||||
|
||||
mi_gdb_test "python cmd.installed = None" \
|
||||
".*\r\n\\^error,msg=\"Error occurred in Python: gdb\\.MICommand\\.installed must be set to a bool, not None\"" \
|
||||
"re-install the mi command using value None"
|
||||
|
||||
mi_gdb_test "python cmd.installed = 1" \
|
||||
".*\r\n\\^error,msg=\"Error occurred in Python: gdb\\.MICommand\\.installed must be set to a bool, not int\"" \
|
||||
"re-install the mi command using an int value"
|
||||
|
||||
mi_gdb_test "python print(cmd.installed)" \
|
||||
[multi_line \
|
||||
".*" \
|
||||
"~\"False\\\\n\"" \
|
||||
"\\^done"] \
|
||||
"cmd is still not installed"
|
||||
|
||||
mi_gdb_test "python cmd.installed = True" \
|
||||
".*\\^done" \
|
||||
"re-install the mi command"
|
||||
|
||||
Reference in New Issue
Block a user