while (GetNextHashPos(LogDebugEntryTable, Pos, &HKLen, &ch, &vptr)) {
LogDebugEntry *E = (LogDebugEntry*)vptr;
- cprintf("%s: %d\n", ch, *E->LogP);
+ cprintf("%s|%d\n", ch, *E->LogP);
}
DeleteHashPos(&Pos);
void CtdlUnregisterRoomHook(int (*fcn_ptr)(struct ctdlroom *))
{
- RoomFunctionHook *cur, *p;
-
- for (cur = RoomHookTable; cur != NULL; cur = cur->next) {
- while (cur != NULL && fcn_ptr == cur->fcn_ptr) {
+ RoomFunctionHook *cur, *p, *last;
+ last = NULL;
+ cur = RoomHookTable;
+ while (cur != NULL)
+ {
+ if (fcn_ptr == cur->fcn_ptr) {
MODM_syslog(LOG_DEBUG, "Unregistered room function\n");
p = cur->next;
- if (cur == RoomHookTable) {
- RoomHookTable = p;
- }
+
free(cur);
+ cur = NULL;
+
+ if (last != NULL)
+ last->next = p;
+ else
+ RoomHookTable = p;
cur = p;
}
+ last = cur;
+ if (cur != NULL)
+ cur = cur->next;
+
}
}