From 8503d6e1e564cb5ac61bc6e3f16c0b384c76661e Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Tue, 6 Jan 2015 18:30:53 +0400 Subject: [PATCH] gdb/python: exception trying to create empty array The following python command fails: (gdb) python print gdb.lookup_type('char').array(1, 0) Traceback (most recent call last): File "", line 1, in ValueError: Array length must not be negative Error while executing Python code. The above is trying to create an empty array, which is fairly command in Ada. gdb/ChangeLog: * python/py-type.c (typy_array_1): Do not raise negative-length exception if N2 is equal to N1 - 1. gdb/testsuite/ChangeLog: * gdb.python/py-type.exp: Add a couple test about empty array creation, and negative-length array creation. --- gdb/ChangeLog | 5 +++++ gdb/python/py-type.c | 2 +- gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/gdb.python/py-type.exp | 6 ++++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b3e1263363b..a6211bf3fa5 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2015-01-06 Joel Brobecker + + * python/py-type.c (typy_array_1): Do not raise negative-length + exception if N2 is equal to N1 - 1. + 2015-01-03 Doug Evans * c-exp.y: Whitespace cleanup. diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c index 54fc30f5cb5..8e82c99f2e2 100644 --- a/gdb/python/py-type.c +++ b/gdb/python/py-type.c @@ -528,7 +528,7 @@ typy_array_1 (PyObject *self, PyObject *args, int is_vector) n1 = 0; } - if (n2 < n1) + if (n2 < n1 - 1) { PyErr_SetString (PyExc_ValueError, _("Array length must not be negative")); diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 374c285dbe9..7db08099584 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-01-06 Joel Brobecker + + * gdb.python/py-type.exp: Add a couple test about empty + array creation, and negative-length array creation. + 2015-01-02 Doug Evans * gdb.cp/nsalias.exp: Fix output of external/declaration flags. diff --git a/gdb/testsuite/gdb.python/py-type.exp b/gdb/testsuite/gdb.python/py-type.exp index 90de68dffc8..c4c8d9f92aa 100644 --- a/gdb/testsuite/gdb.python/py-type.exp +++ b/gdb/testsuite/gdb.python/py-type.exp @@ -247,6 +247,12 @@ restart_gdb "${binfile}" # Skip all tests if Python scripting is not enabled. if { [skip_python_tests] } { continue } +gdb_test "python print gdb.lookup_type('char').array(1, 0)" \ + "char \\\[0\\\]" + +gdb_test "python print gdb.lookup_type('char').array(1, -1)" \ + "Array length must not be negative.*" + with_test_prefix "lang_c" { runto_bp "break to inspect struct and array." test_fields "c" -- 2.30.2