Changeset 2830

Show
Ignore:
Timestamp:
05/17/05 15:18:58 (4 years ago)
Author:
morris
Message:

Safe list removal in list iteration

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • wire/trunk/wire/windows.c

    r1846 r2830  
    5454void wr_init_windows(void) { 
    5555        wr_windows = za_list_init(za_list_alloc()); 
    56          
     56 
    5757        wr_console_window = wr_window_init_chat(wr_window_alloc(), 1); 
    5858        wr_windows_add_window(wr_console_window); 
    5959        za_release(wr_console_window); 
    60          
     60 
    6161        wr_current_window = wr_console_window; 
    6262} 
     
    6565 
    6666void wr_clear_windows(void) { 
    67         za_list_node_t  *node
     67        za_list_node_t  *node, *next_node
    6868        wr_window_t             *window; 
    69          
    70         ZA_LIST_FOREACH(wr_windows, node, window) { 
     69 
     70        for(node = za_list_first(wr_windows); node; node = next_node) { 
     71                next_node = ZA_LIST_NEXT(node); 
     72                window = ZA_LIST_DATA(node); 
     73                 
    7174                if(window != wr_console_window) 
    7275                        wr_windows_close_window(window); 
     
    219222        za_list_node_t  *node; 
    220223        wr_window_t             *window; 
    221          
     224 
    222225        if(cid == 1) 
    223226                return wr_console_window;