diff --git a/gdb/python/py-disasm.c b/gdb/python/py-disasm.c index 7b64436d8bf..58e2efe0819 100644 --- a/gdb/python/py-disasm.c +++ b/gdb/python/py-disasm.c @@ -650,7 +650,7 @@ disasmpy_set_enabled (PyObject *self, PyObject *args, PyObject *kw) return nullptr; } - python_print_insn_enabled = PyObject_IsTrue (newstate); + python_print_insn_enabled = newstate == Py_True; Py_RETURN_NONE; } diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c index 119bf9f76d7..eef3841924f 100644 --- a/gdb/python/py-value.c +++ b/gdb/python/py-value.c @@ -815,7 +815,9 @@ valpy_format_string (PyObject *self, PyObject *args, PyObject *kw) } } - string_file stb (PyObject_IsTrue (styling_obj)); + /* We force styling_obj to be a 'bool' when we parse the args above. */ + gdb_assert (PyBool_Check (styling_obj)); + string_file stb (styling_obj == Py_True); try { @@ -1988,9 +1990,8 @@ convert_value_from_python (PyObject *obj) { if (PyBool_Check (obj)) { - cmp = PyObject_IsTrue (obj); - if (cmp >= 0) - value = value_from_longest (builtin_type_pybool, cmp); + cmp = obj == Py_True ? 1 : 0; + value = value_from_longest (builtin_type_pybool, cmp); } else if (PyLong_Check (obj)) { diff --git a/gdb/testsuite/gdb.python/py-format-string.exp b/gdb/testsuite/gdb.python/py-format-string.exp index d0349c546ad..9102391b0be 100644 --- a/gdb/testsuite/gdb.python/py-format-string.exp +++ b/gdb/testsuite/gdb.python/py-format-string.exp @@ -1131,6 +1131,11 @@ proc_with_prefix test_invalid_args {} { proc test_styling {} { gdb_test "python print(gdb.parse_and_eval(\"a_point_t\").format_string(styling=True, raw=True))" \ "{[style x variable] = 42, [style y variable] = 12}" + + gdb_test "python print(gdb.parse_and_eval(\"a_point_t\").format_string(styling=None, raw=True))" \ + [multi_line \ + "Python Exception : argument 8 must be bool, not None" \ + "Error occurred in Python: argument 8 must be bool, not None" ] \ } # Test the gdb.print_options API.