Index: gdbtk-varobj.c =================================================================== RCS file: /cvs/src/src/gdb/gdbtk/generic/gdbtk-varobj.c,v retrieving revision 1.14 diff -p -r1.14 gdbtk-varobj.c *** gdbtk-varobj.c 3 Aug 2002 16:22:07 -0000 1.14 --- gdbtk-varobj.c 6 Nov 2002 20:28:14 -0000 *************** static void install_variable (Tcl_Interp *** 70,82 **** static void uninstall_variable (Tcl_Interp *, char *); /* String representations of gdb's format codes */ ! char *format_string[] = {"natural", "binary", "decimal", "hexadecimal", "octal"}; - #if defined(FREEIF) - #undef FREEIF - #endif - #define FREEIF(x) if (x != NULL) free((char *) (x)) /* Initialize the variable code. This function should be called once to install and initialize the variable code into the interpreter. */ --- 70,78 ---- static void uninstall_variable (Tcl_Interp *, char *); /* String representations of gdb's format codes */ ! static char *format_string[] = {"natural", "binary", "decimal", "hexadecimal", "octal"}; /* Initialize the variable code. This function should be called once to install and initialize the variable code into the interpreter. */ *************** variable_obj_command (ClientData clientD *** 259,271 **** { char *name = varobj_get_expression (var); Tcl_SetObjResult (interp, Tcl_NewStringObj (name, -1)); ! FREEIF (name); } break; case VARIABLE_EDITABLE: ! Tcl_SetObjResult (interp, Tcl_NewIntObj ( ! varobj_get_attributes (var) & 0x00000001 /* Editable? */ )); break; case VARIABLE_UPDATE: --- 255,267 ---- { char *name = varobj_get_expression (var); Tcl_SetObjResult (interp, Tcl_NewStringObj (name, -1)); ! xfree (name); } break; case VARIABLE_EDITABLE: ! Tcl_SetObjResult (interp, ! Tcl_NewIntObj (varobj_get_attributes (var) & 0x00000001 /* Editable? */ )); break; case VARIABLE_UPDATE: *************** variable_create (Tcl_Interp *interp, int *** 337,343 **** if (Tcl_GetIndexFromObj (interp, objv[0], create_options, "options", 0, &index) != TCL_OK) { ! free (obj_name); result_ptr->flags |= GDBTK_IN_TCL_RESULT; return TCL_ERROR; } --- 333,339 ---- if (Tcl_GetIndexFromObj (interp, objv[0], create_options, "options", 0, &index) != TCL_OK) { ! xfree (obj_name); result_ptr->flags |= GDBTK_IN_TCL_RESULT; return TCL_ERROR; } *************** variable_create (Tcl_Interp *interp, int *** 380,390 **** Tcl_SetObjResult (interp, Tcl_NewStringObj (obj_name, -1)); result_ptr->flags |= GDBTK_IN_TCL_RESULT; ! free (obj_name); return TCL_OK; } ! free (obj_name); return TCL_ERROR; } --- 376,386 ---- Tcl_SetObjResult (interp, Tcl_NewStringObj (obj_name, -1)); result_ptr->flags |= GDBTK_IN_TCL_RESULT; ! xfree (obj_name); return TCL_OK; } ! xfree (obj_name); return TCL_ERROR; } *************** variable_delete (Tcl_Interp *interp, str *** 403,413 **** while (*vc != NULL) { uninstall_variable (interp, *vc); ! free (*vc); vc++; } ! FREEIF (dellist); } /* Return a list of all the children of VAR, creating them if necessary. */ --- 399,409 ---- while (*vc != NULL) { uninstall_variable (interp, *vc); ! xfree (*vc); vc++; } ! xfree (dellist); } /* Return a list of all the children of VAR, creating them if necessary. */ *************** variable_children (Tcl_Interp *interp, s *** 434,440 **** vc++; } ! FREEIF (childlist); return list; } --- 430,436 ---- vc++; } ! xfree (childlist); return list; } *************** variable_update (Tcl_Interp *interp, str *** 448,460 **** struct varobj **changelist; struct varobj **vc; - changed = Tcl_NewListObj (0, NULL); - /* varobj_update() can return -1 if the variable is no longer around, i.e. we stepped out of the frame in which a local existed. */ if (varobj_update (var, &changelist) == -1) ! return changed; vc = changelist; while (*vc != NULL) { --- 444,455 ---- struct varobj **changelist; struct varobj **vc; /* varobj_update() can return -1 if the variable is no longer around, i.e. we stepped out of the frame in which a local existed. */ if (varobj_update (var, &changelist) == -1) ! return Tcl_NewStringObj ("-1", -1); + changed = Tcl_NewListObj (0, NULL); vc = changelist; while (*vc != NULL) { *************** variable_update (Tcl_Interp *interp, str *** 464,470 **** vc++; } ! FREEIF (changelist); return changed; } --- 459,465 ---- vc++; } ! xfree (changelist); return changed; } *************** variable_type (Tcl_Interp *interp, int o *** 545,551 **** } Tcl_SetObjResult (interp, Tcl_NewStringObj (string, -1)); ! FREEIF (string); return TCL_OK; } --- 540,546 ---- } Tcl_SetObjResult (interp, Tcl_NewStringObj (string, -1)); ! xfree (string); return TCL_OK; } *************** variable_value (Tcl_Interp *interp, int *** 593,599 **** else { Tcl_SetObjResult (interp, Tcl_NewStringObj (r, -1)); ! FREEIF (r); return TCL_OK; } } --- 588,594 ---- else { Tcl_SetObjResult (interp, Tcl_NewStringObj (r, -1)); ! xfree (r); return TCL_OK; } }