[nginx] Script: switched to ngx_align() macro in code size calcu...

Maxim Dounin mdounin at mdounin.ru
Tue May 26 01:00:23 UTC 2026


details:   http://freenginx.org/hg/nginx/rev/663a124aba60
branches:  
changeset: 9533:663a124aba60
user:      Maxim Dounin <mdounin at mdounin.ru>
date:      Tue May 26 03:21:37 2026 +0300
description:
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.

diffstat:

 src/http/modules/ngx_http_fastcgi_module.c |   5 ++---
 src/http/modules/ngx_http_grpc_module.c    |   5 ++---
 src/http/modules/ngx_http_proxy_module.c   |   5 ++---
 src/http/modules/ngx_http_scgi_module.c    |   5 ++---
 src/http/modules/ngx_http_uwsgi_module.c   |   5 ++---
 src/http/ngx_http_script.c                 |  26 +++++++++++---------------
 src/stream/ngx_stream_script.c             |  26 +++++++++++---------------
 7 files changed, 32 insertions(+), 45 deletions(-)

diffs (189 lines):

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_grpc_module.c b/src/http/modules/ngx_http_grpc_module.c
--- a/src/http/modules/ngx_http_grpc_module.c
+++ b/src/http/modules/ngx_http_grpc_module.c
@@ -4717,9 +4717,8 @@ ngx_http_grpc_init_headers(ngx_conf_t *c
                                                  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_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