When GDB is built with undefined behavior sanitizer,
gdb.python/py-style.exp fails because of this:
$ ./gdb -q -nx --data-directory=data-directory -ex "python filename_style = gdb.Style('filename')" -ex "python filename_style.intensity = -3"
/home/simark/src/binutils-gdb/gdb/python/py-style.c:239:11: runtime error: load of value
4294967293, which is not a valid value for type 'intensity'
Fix it by casting the value to ui_file_style::intensity only after
validating the raw value.
Change-Id: I38eb471a9cb3bfc3bb8b2c88afa76b8025e4e893
Approved-By: Tom Tromey <tom@tromey.com>
static std::optional<ui_file_style::intensity>
stylepy_long_to_intensity (long intensity_value)
{
- ui_file_style::intensity intensity
- = static_cast<ui_file_style::intensity> (intensity_value);
- switch (intensity)
+ switch (intensity_value)
{
case ui_file_style::NORMAL:
case ui_file_style::DIM:
case ui_file_style::BOLD:
- break;
+ return static_cast<ui_file_style::intensity> (intensity_value);
default:
PyErr_Format
intensity_value);
return {};
}
-
- return intensity;
}
/* Initialise a gdb.Style object from a foreground and background