Fixes (more or less) random SEGFAULT upon invoking script_command().
git-svn-id: svn://svn.berlios.de/openocd/trunk@1156 b42882b7-edfa-0310-969c-e2dbd0fdcd60__archive__
parent
1360ae4487
commit
ded28546f8
|
@ -64,7 +64,6 @@ static void tcl_output(void *privData, const char *file, int line, const char *f
|
||||||
|
|
||||||
extern command_context_t *global_cmd_ctx;
|
extern command_context_t *global_cmd_ctx;
|
||||||
|
|
||||||
|
|
||||||
static int script_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
|
static int script_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
|
||||||
{
|
{
|
||||||
/* the private data is stashed in the interp structure */
|
/* the private data is stashed in the interp structure */
|
||||||
|
@ -75,10 +74,20 @@ static int script_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
|
||||||
int nwords;
|
int nwords;
|
||||||
char **words;
|
char **words;
|
||||||
|
|
||||||
|
/* DANGER!!!! be careful what we invoke here, since interp->cmdPrivData might
|
||||||
|
* get overwritten by running other Jim commands! Treat it as an
|
||||||
|
* emphemeral global variable that is used in lieu of an argument
|
||||||
|
* to the fn and fish it out manually.
|
||||||
|
*/
|
||||||
|
c = interp->cmdPrivData;
|
||||||
|
if (c==NULL)
|
||||||
|
{
|
||||||
|
LOG_ERROR("BUG: interp->cmdPrivData==NULL");
|
||||||
|
return JIM_ERR;
|
||||||
|
}
|
||||||
target_call_timer_callbacks_now();
|
target_call_timer_callbacks_now();
|
||||||
LOG_USER_N("%s", ""); /* Keep GDB connection alive*/
|
LOG_USER_N("%s", ""); /* Keep GDB connection alive*/
|
||||||
|
|
||||||
c = interp->cmdPrivData;
|
|
||||||
LOG_DEBUG("script_command - %s", c->name);
|
LOG_DEBUG("script_command - %s", c->name);
|
||||||
|
|
||||||
words = malloc(sizeof(char *) * argc);
|
words = malloc(sizeof(char *) * argc);
|
||||||
|
|
Loading…
Reference in New Issue