(*breakpoint_p)->length = length;
(*breakpoint_p)->type = type;
(*breakpoint_p)->set = 0;
- (*breakpoint_p)->orig_instr = malloc(CEIL(length, 8));
+ (*breakpoint_p)->orig_instr = malloc(length);
(*breakpoint_p)->next = NULL;
if ((retval = target->type->add_breakpoint(target, *breakpoint_p)) != ERROR_OK)
{
if ((retval = target->type->remove_watchpoint(target, watchpoint)) != ERROR_OK)
{
- ERROR("BUG: can't remove watchpoint");
- exit(-1);
+ switch (retval)
+ {
+ case ERROR_TARGET_NOT_HALTED:
+ INFO("can't remove watchpoint while target is running");
+ return retval;
+ break;
+ default:
+ ERROR("unknown error");
+ exit(-1);
+ break;
+ }
}
(*watchpoint_p) = watchpoint->next;
free(watchpoint);