CtdlUnregisterRoomHook(): second try.
authorWilfried Goesgens <dothebart@citadel.org>
Sat, 26 May 2012 12:18:34 +0000 (14:18 +0200)
committerWilfried Goesgens <dothebart@citadel.org>
Sat, 26 May 2012 12:18:34 +0000 (14:18 +0200)
citadel/serv_extensions.c

index fe15aa785c438b781448f368bc314e97458d4c2a..0553e34a9d68efd8bf1afa01587a5719329b000b 100644 (file)
@@ -758,10 +758,9 @@ void CtdlRegisterRoomHook(int (*fcn_ptr)(struct ctdlroom *))
 void CtdlUnregisterRoomHook(int (*fcn_ptr)(struct ctdlroom *))
 {
        RoomFunctionHook *cur, *p, *last;
-
-       for (last = NULL, cur = RoomHookTable;
-            cur != NULL;
-            cur = cur->next)
+       last = NULL;
+       cur = RoomHookTable;
+       while (cur != NULL)
        {
                if (fcn_ptr == cur->fcn_ptr) {
                        MODM_syslog(LOG_DEBUG, "Unregistered room function\n");
@@ -774,8 +773,12 @@ void CtdlUnregisterRoomHook(int (*fcn_ptr)(struct ctdlroom *))
                                last->next = p;
                        else 
                                RoomHookTable = p;
+                       cur = p;
                }
                last = cur;
+               if (cur != NULL)
+                       cur = cur->next;
+
        }
 }