void dbg_del_process(struct dbg_process* p) { int i; while (p->threads) dbg_del_thread(p->threads); for (i = 0; i < p->num_delayed_bp; i++) if (p->delayed_bp[i].is_symbol) HeapFree(GetProcessHeap(), 0, p->delayed_bp[i].u.symbol.name); HeapFree(GetProcessHeap(), 0, p->delayed_bp); source_nuke_path(p); source_free_files(p); if (p->prev) p->prev->next = p->next; if (p->next) p->next->prev = p->prev; if (p == dbg_process_list) dbg_process_list = p->next; if (p == dbg_curr_process) dbg_curr_process = NULL; HeapFree(GetProcessHeap(), 0, (char*)p->imageName); HeapFree(GetProcessHeap(), 0, p); }
void dbg_del_process(struct dbg_process* p) { struct dbg_thread* t; struct dbg_thread* t2; int i; LIST_FOR_EACH_ENTRY_SAFE(t, t2, &p->threads, struct dbg_thread, entry) dbg_del_thread(t); for (i = 0; i < p->num_delayed_bp; i++) if (p->delayed_bp[i].is_symbol) HeapFree(GetProcessHeap(), 0, p->delayed_bp[i].u.symbol.name); HeapFree(GetProcessHeap(), 0, p->delayed_bp); source_nuke_path(p); source_free_files(p); list_remove(&p->entry); if (p == dbg_curr_process) dbg_curr_process = NULL; HeapFree(GetProcessHeap(), 0, (char*)p->imageName); HeapFree(GetProcessHeap(), 0, p); }