mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-12-19 01:19:41 +08:00
gdb: add check for empty array
With the command before the change, gdb crashes with message:
(gdb) p 1 == { }
Fatal signal: Segmentation fault
After the fix in this commit, gdb shows following message:
(gdb) p 1 == { }
size of the array element must not be zero
Add new test cases to file gdb.base/printcmds.exp to test this change
Approved-By: Tom Tromey <tom@tromey.com>
This commit is contained in:
@@ -744,6 +744,12 @@ proc test_print_char_arrays {} {
|
||||
gdb_test_no_output "set print address off" "address off char arrays"
|
||||
}
|
||||
|
||||
proc test_print_arrays_negative {} {
|
||||
# Check whether correct error messages are printed
|
||||
gdb_test "p 1 == { }" "size of the array element must not be zero"
|
||||
gdb_test "p 1 == { 1, 'a' }" "array elements must all be the same size"
|
||||
}
|
||||
|
||||
proc test_print_nibbles {} {
|
||||
gdb_test_no_output "set print nibbles on"
|
||||
foreach lang_line {
|
||||
@@ -1235,6 +1241,7 @@ test_print_int_arrays
|
||||
test_print_typedef_arrays
|
||||
test_artificial_arrays
|
||||
test_print_char_arrays
|
||||
test_print_arrays_negative
|
||||
test_print_nibbles
|
||||
# We used to do the runto main here.
|
||||
test_print_string_constants
|
||||
|
||||
@@ -1695,6 +1695,9 @@ value_array (int lowbound, gdb::array_view<struct value *> elemvec)
|
||||
/* Validate that the bounds are reasonable and that each of the
|
||||
elements have the same size. */
|
||||
|
||||
if (elemvec.empty ())
|
||||
error (_("size of the array element must not be zero"));
|
||||
|
||||
typelength = type_length_units (elemvec[0]->enclosing_type ());
|
||||
for (struct value *other : elemvec.slice (1))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user