[nginx] Handling of ngx_int_t != intptr_t case.

Maxim Dounin mdounin at mdounin.ru
Wed Sep 4 17:37:03 UTC 2013


details:   http://hg.nginx.org/nginx/rev/79b9101cecf4
branches:  
changeset: 5362:79b9101cecf4
user:      Maxim Dounin <mdounin at mdounin.ru>
date:      Wed Sep 04 21:16:59 2013 +0400
description:
Handling of ngx_int_t != intptr_t case.

Casts between pointers and integers produce warnings on size mismatch.  To
silence them, cast to (u)intptr_t should be used.  Prevoiusly, casts to
ngx_(u)int_t were used in some cases, and several ngx_int_t expressions had
no casts.

As of now it's mostly style as ngx_int_t is defined as intptr_t.

diffstat:

 src/core/ngx_slab.c                          |  3 ++-
 src/http/modules/ngx_http_map_module.c       |  6 +++---
 src/http/modules/perl/ngx_http_perl_module.c |  4 ++--
 3 files changed, 7 insertions(+), 6 deletions(-)

diffs (64 lines):

diff --git a/src/core/ngx_slab.c b/src/core/ngx_slab.c
--- a/src/core/ngx_slab.c
+++ b/src/core/ngx_slab.c
@@ -440,7 +440,8 @@ ngx_slab_free_locked(ngx_slab_pool_t *po
         n = ((uintptr_t) p & (ngx_pagesize - 1)) >> shift;
         m = (uintptr_t) 1 << (n & (sizeof(uintptr_t) * 8 - 1));
         n /= (sizeof(uintptr_t) * 8);
-        bitmap = (uintptr_t *) ((uintptr_t) p & ~(ngx_pagesize - 1));
+        bitmap = (uintptr_t *)
+                             ((uintptr_t) p & ~((uintptr_t) ngx_pagesize - 1));
 
         if (bitmap[n] & m) {
 
diff --git a/src/http/modules/ngx_http_map_module.c b/src/http/modules/ngx_http_map_module.c
--- a/src/http/modules/ngx_http_map_module.c
+++ b/src/http/modules/ngx_http_map_module.c
@@ -131,7 +131,7 @@ ngx_http_map_variable(ngx_http_request_t
     }
 
     if (!value->valid) {
-        value = ngx_http_get_flushed_variable(r, (ngx_uint_t) value->data);
+        value = ngx_http_get_flushed_variable(r, (uintptr_t) value->data);
 
         if (value == NULL || value->not_found) {
             value = &ngx_http_variable_null_value;
@@ -414,7 +414,7 @@ ngx_http_map(ngx_conf_t *cf, ngx_command
         var = ctx->var_values.elts;
 
         for (i = 0; i < ctx->var_values.nelts; i++) {
-            if (index == (ngx_int_t) var[i].data) {
+            if (index == (intptr_t) var[i].data) {
                 var = &var[i];
                 goto found;
             }
@@ -429,7 +429,7 @@ ngx_http_map(ngx_conf_t *cf, ngx_command
         var->no_cacheable = 0;
         var->not_found = 0;
         var->len = 0;
-        var->data = (u_char *) index;
+        var->data = (u_char *) (intptr_t) index;
 
         goto found;
     }
diff --git a/src/http/modules/perl/ngx_http_perl_module.c b/src/http/modules/perl/ngx_http_perl_module.c
--- a/src/http/modules/perl/ngx_http_perl_module.c
+++ b/src/http/modules/perl/ngx_http_perl_module.c
@@ -421,7 +421,7 @@ ngx_http_perl_ssi(ngx_http_request_t *r,
             return NGX_ERROR;
         }
 
-        asv[0] = (SV *) i;
+        asv[0] = (SV *) (uintptr_t) i;
 
         for (i = 0; args[i]; i++) {
             asv[i + 1] = newSVpvn((char *) args[i]->data, args[i]->len);
@@ -692,7 +692,7 @@ ngx_http_perl_call_handler(pTHX_ ngx_htt
     if (args) {
         EXTEND(sp, (intptr_t) args[0]);
 
-        for (i = 1; i <= (ngx_uint_t) args[0]; i++) {
+        for (i = 1; i <= (uintptr_t) args[0]; i++) {
             PUSHs(sv_2mortal(args[i]));
         }
     }



More information about the nginx-devel mailing list