Mercurial > hg > nginx
changeset 1236:5e4d3b5d7ad0
use pointer to an array instead of array for inclusive locations inside location
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 05 Jun 2007 11:42:59 +0000 |
parents | f8a40ccafb04 |
children | 2c2271d3aac5 |
files | src/http/modules/ngx_http_rewrite_module.c src/http/ngx_http.c src/http/ngx_http_core_module.c src/http/ngx_http_core_module.h |
diffstat | 4 files changed, 30 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/modules/ngx_http_rewrite_module.c Tue Jun 05 06:44:08 2007 +0000 +++ b/src/http/modules/ngx_http_rewrite_module.c Tue Jun 05 11:42:59 2007 +0000 @@ -567,15 +567,14 @@ clcf->name = pclcf->name; clcf->noname = 1; - if (pclcf->locations.elts == NULL) { - if (ngx_array_init(&pclcf->locations, cf->pool, 4, sizeof(void *)) - == NGX_ERROR) - { + if (pclcf->locations == NULL) { + pclcf->locations = ngx_array_create(cf->pool, 2, sizeof(void *)); + if (pclcf->locations == NULL) { return NGX_CONF_ERROR; } } - clcfp = ngx_array_push(&pclcf->locations); + clcfp = ngx_array_push(pclcf->locations); if (clcfp == NULL) { return NGX_CONF_ERROR; }
--- a/src/http/ngx_http.c Tue Jun 05 06:44:08 2007 +0000 +++ b/src/http/ngx_http.c Tue Jun 05 11:42:59 2007 +0000 @@ -1015,7 +1015,11 @@ return rv; } - rv = ngx_http_merge_locations(cf, &clcfp[i]->locations, + if (clcfp[i]->locations == NULL) { + continue; + } + + rv = ngx_http_merge_locations(cf, clcfp[i]->locations, clcfp[i]->loc_conf, module, ctx_index); if (rv != NGX_CONF_OK) { return rv;
--- a/src/http/ngx_http_core_module.c Tue Jun 05 06:44:08 2007 +0000 +++ b/src/http/ngx_http_core_module.c Tue Jun 05 11:42:59 2007 +0000 @@ -1008,8 +1008,8 @@ if (found) { clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); - if (clcf->locations.nelts) { - rc = ngx_http_core_find_location(r, &clcf->locations, + if (clcf->locations) { + rc = ngx_http_core_find_location(r, clcf->locations, clcf->regex_start, len); if (rc != NGX_OK) { @@ -1793,15 +1793,15 @@ return NGX_CONF_ERROR; } - if (pclcf->locations.elts == NULL) { - if (ngx_array_init(&pclcf->locations, cf->pool, 4, sizeof(void *)) - != NGX_OK) - { + if (pclcf->locations == NULL) { + pclcf->locations = ngx_array_create(cf->pool, 2, sizeof(void *)); + + if (pclcf->locations == NULL) { return NGX_CONF_ERROR; } } - clcfp = ngx_array_push(&pclcf->locations); + clcfp = ngx_array_push(pclcf->locations); if (clcfp == NULL) { return NGX_CONF_ERROR; } @@ -1821,13 +1821,17 @@ return rv; } - ngx_sort(clcf->locations.elts, (size_t) clcf->locations.nelts, + if (clcf->locations == NULL) { + return rv; + } + + ngx_sort(clcf->locations->elts, (size_t) clcf->locations->nelts, sizeof(ngx_http_core_loc_conf_t *), ngx_http_core_cmp_locations); - clcf->regex_start = clcf->locations.nelts; - clcfp = clcf->locations.elts; - - for (i = 0; i < clcf->locations.nelts; i++) { + clcf->regex_start = clcf->locations->nelts; + clcfp = clcf->locations->elts; + + for (i = 0; i < clcf->locations->nelts; i++) { if (clcfp[i]->regex) { clcf->regex_start = i; break; @@ -2855,15 +2859,14 @@ lcf->name = clcf->name; lcf->noname = 1; - if (clcf->locations.elts == NULL) { - if (ngx_array_init(&clcf->locations, cf->pool, 4, sizeof(void *)) - == NGX_ERROR) - { + if (clcf->locations == NULL) { + clcf->locations = ngx_array_create(cf->pool, 2, sizeof(void *)); + if (clcf->locations == NULL) { return NGX_CONF_ERROR; } } - clcfp = ngx_array_push(&clcf->locations); + clcfp = ngx_array_push(clcf->locations); if (clcfp == NULL) { return NGX_CONF_ERROR; }
--- a/src/http/ngx_http_core_module.h Tue Jun 05 06:44:08 2007 +0000 +++ b/src/http/ngx_http_core_module.h Tue Jun 05 11:42:59 2007 +0000 @@ -222,7 +222,7 @@ unsigned alias:1; /* array of inclusive ngx_http_core_loc_conf_t */ - ngx_array_t locations; + ngx_array_t *locations; /* pointer to the modules' loc_conf */ void **loc_conf ;