off-by-one fix for py-linetable.c
While digging into a different memory corruption error, I happened to notice one coming from the linetable code. In a couple of spots, the wrong termination condition was used in a loop, leading gdb to read one element past the end of the linetable. Built and regtested on x86-64 Fedora 18. Also verified using valgrind. I'm checking this in. 2013-11-14 Tom Tromey <tromey@redhat.com> * python/py-linetable.c (ltpy_has_line) (ltpy_get_all_source_lines): Fix loop termination condition.
This commit is contained in:
parent
57460bcf82
commit
918229560c
|
@ -1,3 +1,8 @@
|
||||||
|
2013-11-14 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
|
* python/py-linetable.c (ltpy_has_line)
|
||||||
|
(ltpy_get_all_source_lines): Fix loop termination condition.
|
||||||
|
|
||||||
2013-11-14 Joel Brobecker <brobecker@adacore.com>
|
2013-11-14 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
* mi/mi-parse.h (struct mi_parse) <language>: New field.
|
* mi/mi-parse.h (struct mi_parse) <language>: New field.
|
||||||
|
|
|
@ -215,7 +215,7 @@ ltpy_has_line (PyObject *self, PyObject *args)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (index = 0; index <= LINETABLE (symtab)->nitems; index++)
|
for (index = 0; index < LINETABLE (symtab)->nitems; index++)
|
||||||
{
|
{
|
||||||
struct linetable_entry *item = &(symtab->linetable->item[index]);
|
struct linetable_entry *item = &(symtab->linetable->item[index]);
|
||||||
if (item->line == py_line)
|
if (item->line == py_line)
|
||||||
|
@ -252,7 +252,7 @@ ltpy_get_all_source_lines (PyObject *self, PyObject *args)
|
||||||
if (source_dict == NULL)
|
if (source_dict == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
for (index = 0; index <= LINETABLE (symtab)->nitems; index++)
|
for (index = 0; index < LINETABLE (symtab)->nitems; index++)
|
||||||
{
|
{
|
||||||
item = &(LINETABLE (symtab)->item[index]);
|
item = &(LINETABLE (symtab)->item[index]);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue