void cm_FreeServerList(cm_serverRef_t** list)
{
- cm_serverRef_t *current = *list;
+ cm_serverRef_t **current = list;
cm_serverRef_t *next = 0;
lock_ObtainWrite(&cm_serverLock);
- while (current)
+ while (*current)
{
- next = current->next;
- if (--current->refCount == 0) {
- cm_FreeServer(current->server);
- free(current);
+ next = (*current)->next;
+ if (--((*current)->refCount) == 0) {
+ cm_FreeServer((*current)->server);
+ free(*current);
}
- current = next;
+ *current = next;
}
lock_ReleaseWrite(&cm_serverLock);