252 pthread_mutex_unlock(&mutex); |
252 pthread_mutex_unlock(&mutex); |
253 } |
253 } |
254 |
254 |
255 void log_remove_logdup(LogDup *ldup) { |
255 void log_remove_logdup(LogDup *ldup) { |
256 pthread_mutex_lock(&mutex); |
256 pthread_mutex_lock(&mutex); |
257 CxIterator i = cxListIterator(log_dup_list, 0); |
257 CxMutIterator i = cxListMutIterator(log_dup_list, 0); |
258 WSBool finished = 0; |
258 WSBool finished = 0; |
259 cx_foreach(LogDup *, dup, i) { |
259 cx_foreach(LogDup *, dup, i) { |
260 if(finished) break; |
260 if(finished) break; |
261 if(dup == ldup) { |
261 if(dup == ldup) { |
262 i.remove = 1; |
262 cxIteratorFlagRemoval(i); |
263 finished = 1; |
263 finished = 1; |
264 ws_atomic_dec32(&log_dup_count); |
264 ws_atomic_dec32(&log_dup_count); |
265 } |
265 } |
266 } |
266 } |
267 pthread_mutex_unlock(&mutex); |
267 pthread_mutex_unlock(&mutex); |