Remove some gotos from Python

This patch slightly refactors a couple of spots in the Python code to
avoid some gotos.

gdb/ChangeLog
2017-02-10  Tom Tromey  <tom@tromey.com>

	* python/python.c (do_start_initialization): New function, from
	_initialize_python.
	(_initialize_python): Call do_start_initialization.
	* python/py-linetable.c (ltpy_iternext): Use explicit returns, not
	goto.
This commit is contained in:
Tom Tromey 2017-01-12 08:59:26 -07:00
parent 1bdfaf42ac
commit 2bb8f23195
3 changed files with 182 additions and 166 deletions

View file

@ -407,7 +407,10 @@ ltpy_iternext (PyObject *self)
LTPY_REQUIRE_VALID (iter_obj->source, symtab);
if (iter_obj->current_index >= SYMTAB_LINETABLE (symtab)->nitems)
goto stop_iteration;
{
PyErr_SetNone (PyExc_StopIteration);
return NULL;
}
item = &(SYMTAB_LINETABLE (symtab)->item[iter_obj->current_index]);
@ -419,7 +422,10 @@ ltpy_iternext (PyObject *self)
/* Exit if the internal value is the last item in the line table. */
if (iter_obj->current_index >= SYMTAB_LINETABLE (symtab)->nitems)
goto stop_iteration;
{
PyErr_SetNone (PyExc_StopIteration);
return NULL;
}
item = &(SYMTAB_LINETABLE (symtab)->item[iter_obj->current_index]);
}
@ -427,10 +433,6 @@ ltpy_iternext (PyObject *self)
iter_obj->current_index++;
return obj;
stop_iteration:
PyErr_SetNone (PyExc_StopIteration);
return NULL;
}
/* Implementation of gdb.LineTableIterator.is_valid (self) -> Boolean.