# HG changeset patch # User Igor Sysoev # Date 1209479955 0 # Node ID 7df9b30e23610018a3a8683d464b263224434ce4 # Parent f711544d01b485641f936fc9975cdeda9e6e76f8 fix segfault when file is deleted and open_file_cache_errors is off diff --git a/src/core/ngx_open_file_cache.c b/src/core/ngx_open_file_cache.c --- a/src/core/ngx_open_file_cache.c +++ b/src/core/ngx_open_file_cache.c @@ -173,8 +173,6 @@ ngx_open_cached_file(ngx_open_file_cache file->uses++; - ngx_queue_remove(&file->queue); - if (file->fd == NGX_INVALID_FILE && file->err == 0 && !file->is_dir) { /* file was not used often enough to keep open */ @@ -185,6 +183,8 @@ ngx_open_cached_file(ngx_open_file_cache goto failed; } + ngx_queue_remove(&file->queue); + goto add_event; } @@ -212,6 +212,8 @@ ngx_open_cached_file(ngx_open_file_cache of->err = file->err; } + ngx_queue_remove(&file->queue); + goto found; } @@ -236,6 +238,8 @@ ngx_open_cached_file(ngx_open_file_cache goto failed; } + ngx_queue_remove(&file->queue); + if (of->is_dir) { if (file->is_dir || file->err) {