addr_string = savestring (frame_exp, p - frame_exp);
{
- tmp_cleanup = make_cleanup (free, addr_string);
+ tmp_cleanup = make_cleanup (xfree, addr_string);
args[numargs++] = parse_and_eval_address (addr_string);
do_cleanups (tmp_cleanup);
}
backtrace_command_1 (argPtr, (argIndicatingFullTrace >= 0), from_tty);
if (argIndicatingFullTrace >= 0 && totArgLen > 0)
- free (argPtr);
+ xfree (argPtr);
if (old_chain)
do_cleanups (old_chain);
if (retval_exp)
set_return_value (return_value);
+ /* If we are at the end of a call dummy now, pop the dummy frame too. */
+
+ if (CALL_DUMMY_HAS_COMPLETED (read_pc(), read_sp (),
+ FRAME_FP (get_current_frame ())))
+ POP_FRAME;
+
/* If interactive, print the frame that is now current. */
if (from_tty)
while (!found && level == 0);
if (func_bounds)
- free (func_bounds);
+ xfree (func_bounds);
if (!found)
printf_filtered ("'%s' not within current stack frame.\n", arg);