[PATCH 5 of 5] Script: switched to ngx_align() macro in code size calculations
Maxim Dounin
mdounin at mdounin.ru
Mon May 25 01:09:44 UTC 2026
# HG changeset patch
# User Maxim Dounin <mdounin at mdounin.ru>
# Date 1779656364 -10800
# Sun May 24 23:59:24 2026 +0300
# Node ID ca6f420a4edd9fd334e11d87540c0f899bc6f04f
# Parent c058606a02aed53f52b26479897a35c0dbdb2f59
Script: switched to ngx_align() macro in code size calculations.
Previously, explicitly written alignment operations were used. With
the ngx_align() macro the code becomes slightly more readable, and
script code size calculations for values better match ones for lengths.
No functional changes.
diff --git a/src/http/modules/ngx_http_fastcgi_module.c b/src/http/modules/ngx_http_fastcgi_module.c
--- a/src/http/modules/ngx_http_fastcgi_module.c
+++ b/src/http/modules/ngx_http_fastcgi_module.c
@@ -3473,9 +3473,8 @@ ngx_http_fastcgi_init_params(ngx_conf_t
copy->len = src[i].skip_empty;
- size = (sizeof(ngx_http_script_copy_code_t)
- + src[i].key.len + sizeof(uintptr_t) - 1)
- & ~(sizeof(uintptr_t) - 1);
+ size = sizeof(ngx_http_script_copy_code_t)
+ + ngx_align(src[i].key.len, sizeof(uintptr_t));
copy = ngx_array_push_n(params->values, size);
if (copy == NULL) {
diff --git a/src/http/modules/ngx_http_proxy_module.c b/src/http/modules/ngx_http_proxy_module.c
--- a/src/http/modules/ngx_http_proxy_module.c
+++ b/src/http/modules/ngx_http_proxy_module.c
@@ -4094,9 +4094,8 @@ ngx_http_proxy_init_headers(ngx_conf_t *
ngx_http_script_copy_len_code;
copy->len = src[i].key.len;
- size = (sizeof(ngx_http_script_copy_code_t)
- + src[i].key.len + sizeof(uintptr_t) - 1)
- & ~(sizeof(uintptr_t) - 1);
+ size = sizeof(ngx_http_script_copy_code_t)
+ + ngx_align(src[i].key.len, sizeof(uintptr_t));
copy = ngx_array_push_n(headers->values, size);
if (copy == NULL) {
diff --git a/src/http/modules/ngx_http_scgi_module.c b/src/http/modules/ngx_http_scgi_module.c
--- a/src/http/modules/ngx_http_scgi_module.c
+++ b/src/http/modules/ngx_http_scgi_module.c
@@ -1840,9 +1840,8 @@ ngx_http_scgi_init_params(ngx_conf_t *cf
copy->len = src[i].skip_empty;
- size = (sizeof(ngx_http_script_copy_code_t)
- + src[i].key.len + 1 + sizeof(uintptr_t) - 1)
- & ~(sizeof(uintptr_t) - 1);
+ size = sizeof(ngx_http_script_copy_code_t)
+ + ngx_align(src[i].key.len + 1, sizeof(uintptr_t));
copy = ngx_array_push_n(params->values, size);
if (copy == NULL) {
diff --git a/src/http/modules/ngx_http_uwsgi_module.c b/src/http/modules/ngx_http_uwsgi_module.c
--- a/src/http/modules/ngx_http_uwsgi_module.c
+++ b/src/http/modules/ngx_http_uwsgi_module.c
@@ -2141,9 +2141,8 @@ ngx_http_uwsgi_init_params(ngx_conf_t *c
copy->len = src[i].skip_empty;
- size = (sizeof(ngx_http_script_copy_code_t)
- + src[i].key.len + sizeof(uintptr_t) - 1)
- & ~(sizeof(uintptr_t) - 1);
+ size = sizeof(ngx_http_script_copy_code_t)
+ + ngx_align(src[i].key.len, sizeof(uintptr_t));
copy = ngx_array_push_n(params->values, size);
if (copy == NULL) {
diff --git a/src/http/ngx_http_script.c b/src/http/ngx_http_script.c
--- a/src/http/ngx_http_script.c
+++ b/src/http/ngx_http_script.c
@@ -194,12 +194,10 @@ ngx_http_compile_complex_value(ngx_http_
return NGX_ERROR;
}
- n = (nv * (2 * sizeof(ngx_http_script_copy_code_t)
- + sizeof(ngx_http_script_var_code_t))
- + sizeof(uintptr_t)
- + v->len
- + sizeof(uintptr_t) - 1)
- & ~(sizeof(uintptr_t) - 1);
+ n = nv * (2 * sizeof(ngx_http_script_copy_code_t)
+ + sizeof(ngx_http_script_var_code_t))
+ + sizeof(uintptr_t)
+ + ngx_align(v->len, sizeof(uintptr_t));
if (ngx_array_init(&values, ccv->cf->pool, n, 1) != NGX_OK) {
return NGX_ERROR;
@@ -696,12 +694,10 @@ ngx_http_script_init_arrays(ngx_http_scr
}
if (*sc->values == NULL) {
- n = (sc->variables * (2 * sizeof(ngx_http_script_copy_code_t)
- + sizeof(ngx_http_script_var_code_t))
- + sizeof(uintptr_t)
- + sc->source->len
- + sizeof(uintptr_t) - 1)
- & ~(sizeof(uintptr_t) - 1);
+ n = sc->variables * (2 * sizeof(ngx_http_script_copy_code_t)
+ + sizeof(ngx_http_script_var_code_t))
+ + sizeof(uintptr_t)
+ + ngx_align(sc->source->len, sizeof(uintptr_t));
*sc->values = ngx_array_create(sc->cf->pool, n, 1);
if (*sc->values == NULL) {
@@ -819,8 +815,8 @@ ngx_http_script_add_copy_code(ngx_http_s
ngx_http_script_copy_len_code;
code->len = len;
- size = (sizeof(ngx_http_script_copy_code_t) + len + sizeof(uintptr_t) - 1)
- & ~(sizeof(uintptr_t) - 1);
+ size = sizeof(ngx_http_script_copy_code_t)
+ + ngx_align(len, sizeof(uintptr_t));
code = ngx_http_script_add_code(*sc->values, size, &sc->main);
if (code == NULL) {
@@ -871,7 +867,7 @@ ngx_http_script_copy_code(ngx_http_scrip
}
e->ip += sizeof(ngx_http_script_copy_code_t)
- + ((code->len + sizeof(uintptr_t) - 1) & ~(sizeof(uintptr_t) - 1));
+ + ngx_align(code->len, sizeof(uintptr_t));
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, e->request->connection->log, 0,
"http script copy: \"%*s\"", e->pos - p, p);
diff --git a/src/stream/ngx_stream_script.c b/src/stream/ngx_stream_script.c
--- a/src/stream/ngx_stream_script.c
+++ b/src/stream/ngx_stream_script.c
@@ -194,12 +194,10 @@ ngx_stream_compile_complex_value(ngx_str
return NGX_ERROR;
}
- n = (nv * (2 * sizeof(ngx_stream_script_copy_code_t)
- + sizeof(ngx_stream_script_var_code_t))
- + sizeof(uintptr_t)
- + v->len
- + sizeof(uintptr_t) - 1)
- & ~(sizeof(uintptr_t) - 1);
+ n = nv * (2 * sizeof(ngx_stream_script_copy_code_t)
+ + sizeof(ngx_stream_script_var_code_t))
+ + sizeof(uintptr_t)
+ + ngx_align(v->len, sizeof(uintptr_t));
if (ngx_array_init(&values, ccv->cf->pool, n, 1) != NGX_OK) {
return NGX_ERROR;
@@ -577,12 +575,10 @@ ngx_stream_script_init_arrays(ngx_stream
}
if (*sc->values == NULL) {
- n = (sc->variables * (2 * sizeof(ngx_stream_script_copy_code_t)
- + sizeof(ngx_stream_script_var_code_t))
- + sizeof(uintptr_t)
- + sc->source->len
- + sizeof(uintptr_t) - 1)
- & ~(sizeof(uintptr_t) - 1);
+ n = sc->variables * (2 * sizeof(ngx_stream_script_copy_code_t)
+ + sizeof(ngx_stream_script_var_code_t))
+ + sizeof(uintptr_t)
+ + ngx_align(sc->source->len, sizeof(uintptr_t));
*sc->values = ngx_array_create(sc->cf->pool, n, 1);
if (*sc->values == NULL) {
@@ -688,8 +684,8 @@ ngx_stream_script_add_copy_code(ngx_stre
ngx_stream_script_copy_len_code;
code->len = len;
- size = (sizeof(ngx_stream_script_copy_code_t) + len + sizeof(uintptr_t) - 1)
- & ~(sizeof(uintptr_t) - 1);
+ size = sizeof(ngx_stream_script_copy_code_t)
+ + ngx_align(len, sizeof(uintptr_t));
code = ngx_stream_script_add_code(*sc->values, size, &sc->main);
if (code == NULL) {
@@ -740,7 +736,7 @@ ngx_stream_script_copy_code(ngx_stream_s
}
e->ip += sizeof(ngx_stream_script_copy_code_t)
- + ((code->len + sizeof(uintptr_t) - 1) & ~(sizeof(uintptr_t) - 1));
+ + ngx_align(code->len, sizeof(uintptr_t));
ngx_log_debug2(NGX_LOG_DEBUG_STREAM, e->session->connection->log, 0,
"stream script copy: \"%*s\"", e->pos - p, p);
More information about the nginx-devel
mailing list