Welcome! Log In Create A New Profile

Advanced

[nginx] Win32: Borland C compatibility fixes.

Maxim Dounin
September 04, 2013 01:16PM
details: http://hg.nginx.org/nginx/rev/2fda9065d0f4
branches:
changeset: 5359:2fda9065d0f4
user: Maxim Dounin <mdounin@mdounin.ru>
date: Wed Sep 04 20:48:23 2013 +0400
description:
Win32: Borland C compatibility fixes.

Several false positive warnings silenced, notably W8012 "Comparing
signed and unsigned" (due to u_short values promoted to int), and
W8072 "Suspicious pointer arithmetic" (due to large type values added
to pointers).

With this patch, it's now again possible to compile nginx using bcc32,
with options we normally compile on win32 minus ipv6 and ssl.

diffstat:

auto/lib/pcre/makefile.bcc | 4 ++--
src/event/ngx_event_accept.c | 2 +-
src/http/modules/ngx_http_memcached_module.c | 2 +-
src/http/modules/ngx_http_mp4_module.c | 10 +++++++---
src/http/modules/ngx_http_proxy_module.c | 4 ++--
src/http/modules/ngx_http_upstream_ip_hash_module.c | 2 +-
src/http/ngx_http_file_cache.c | 2 +-
src/http/ngx_http_request_body.c | 8 ++++----
src/os/win32/ngx_win32_config.h | 8 ++++++++
9 files changed, 27 insertions(+), 15 deletions(-)

diffs (174 lines):

diff --git a/auto/lib/pcre/makefile.bcc b/auto/lib/pcre/makefile.bcc
--- a/auto/lib/pcre/makefile.bcc
+++ b/auto/lib/pcre/makefile.bcc
@@ -13,8 +13,8 @@ pcre.lib:

bcc32 -c $(CFLAGS) -I. $(PCREFLAGS) pcre_*.c

- > pcre.lst
- for %n in (*.obj) do @echo +%n & >> pcre.lst
+ copy /y nul pcre.lst
+ for %n in (*.obj) do @echo +%n ^^& >> pcre.lst
echo + >> pcre.lst

tlib pcre.lib @pcre.lst
diff --git a/src/event/ngx_event_accept.c b/src/event/ngx_event_accept.c
--- a/src/event/ngx_event_accept.c
+++ b/src/event/ngx_event_accept.c
@@ -297,7 +297,7 @@ ngx_event_accept(ngx_event_t *ev)

cidr = ecf->debug_connection.elts;
for (i = 0; i < ecf->debug_connection.nelts; i++) {
- if (cidr[i].family != c->sockaddr->sa_family) {
+ if (cidr[i].family != (ngx_uint_t) c->sockaddr->sa_family) {
goto next;
}

diff --git a/src/http/modules/ngx_http_memcached_module.c b/src/http/modules/ngx_http_memcached_module.c
--- a/src/http/modules/ngx_http_memcached_module.c
+++ b/src/http/modules/ngx_http_memcached_module.c
@@ -520,7 +520,7 @@ ngx_http_memcached_filter(void *data, ss
return NGX_OK;
}

- last += u->length - NGX_HTTP_MEMCACHED_END;
+ last += (size_t) (u->length - NGX_HTTP_MEMCACHED_END);

if (ngx_strncmp(last, ngx_http_memcached_end, b->last - last) != 0) {
ngx_log_error(NGX_LOG_ERR, ctx->request->connection->log, 0,
diff --git a/src/http/modules/ngx_http_mp4_module.c b/src/http/modules/ngx_http_mp4_module.c
--- a/src/http/modules/ngx_http_mp4_module.c
+++ b/src/http/modules/ngx_http_mp4_module.c
@@ -157,7 +157,11 @@ typedef struct {
#define ngx_mp4_atom_header(mp4) (mp4->buffer_pos - 8)
#define ngx_mp4_atom_data(mp4) mp4->buffer_pos
#define ngx_mp4_atom_data_size(t) (uint64_t) (sizeof(t) - 8)
-#define ngx_mp4_atom_next(mp4, n) mp4->buffer_pos += n; mp4->offset += n
+
+
+#define ngx_mp4_atom_next(mp4, n) \
+ mp4->buffer_pos += (size_t) n; \
+ mp4->offset += n


#define ngx_mp4_set_atom_name(p, n1, n2, n3, n4) \
@@ -956,7 +960,7 @@ ngx_http_mp4_read_ftyp_atom(ngx_http_mp4
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, mp4->file.log, 0, "mp4 ftyp atom");

if (atom_data_size > 1024
- || ngx_mp4_atom_data(mp4) + atom_data_size > mp4->buffer_end)
+ || ngx_mp4_atom_data(mp4) + (size_t) atom_data_size > mp4->buffer_end)
{
ngx_log_error(NGX_LOG_ERR, mp4->file.log, 0,
"\"%s\" mp4 ftyp atom is too large:%uL",
@@ -1304,7 +1308,7 @@ ngx_http_mp4_read_trak_atom(ngx_http_mp4

trak->out[NGX_HTTP_MP4_TRAK_ATOM].buf = atom;

- atom_end = mp4->buffer_pos + atom_data_size;
+ atom_end = mp4->buffer_pos + (size_t) atom_data_size;
atom_file_end = mp4->offset + atom_data_size;

rc = ngx_http_mp4_read_atom(mp4, ngx_http_mp4_trak_atoms, atom_data_size);
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
@@ -1712,7 +1712,7 @@ ngx_http_proxy_chunked_filter(ngx_event_

if (buf->last - buf->pos >= ctx->chunked.size) {

- buf->pos += ctx->chunked.size;
+ buf->pos += (size_t) ctx->chunked.size;
b->last = buf->pos;
ctx->chunked.size = 0;

@@ -1875,7 +1875,7 @@ ngx_http_proxy_non_buffered_chunked_filt
b->tag = u->output.tag;

if (buf->last - buf->pos >= ctx->chunked.size) {
- buf->pos += ctx->chunked.size;
+ buf->pos += (size_t) ctx->chunked.size;
b->last = buf->pos;
ctx->chunked.size = 0;

diff --git a/src/http/modules/ngx_http_upstream_ip_hash_module.c b/src/http/modules/ngx_http_upstream_ip_hash_module.c
--- a/src/http/modules/ngx_http_upstream_ip_hash_module.c
+++ b/src/http/modules/ngx_http_upstream_ip_hash_module.c
@@ -174,7 +174,7 @@ ngx_http_upstream_get_ip_hash_peer(ngx_p

for ( ;; ) {

- for (i = 0; i < iphp->addrlen; i++) {
+ for (i = 0; i < (ngx_uint_t) iphp->addrlen; i++) {
hash = (hash * 113 + iphp->addr[i]) % 6271;
}

diff --git a/src/http/ngx_http_file_cache.c b/src/http/ngx_http_file_cache.c
--- a/src/http/ngx_http_file_cache.c
+++ b/src/http/ngx_http_file_cache.c
@@ -503,7 +503,7 @@ ngx_http_file_cache_read(ngx_http_reques
return NGX_DECLINED;
}

- if (h->body_start > c->body_start) {
+ if ((size_t) h->body_start > c->body_start) {
ngx_log_error(NGX_LOG_CRIT, r->connection->log, 0,
"cache file \"%s\" has too long header",
c->file.name.data);
diff --git a/src/http/ngx_http_request_body.c b/src/http/ngx_http_request_body.c
--- a/src/http/ngx_http_request_body.c
+++ b/src/http/ngx_http_request_body.c
@@ -714,7 +714,7 @@ ngx_http_discard_request_body_filter(ngx
size = b->last - b->pos;

if ((off_t) size > rb->chunked->size) {
- b->pos += rb->chunked->size;
+ b->pos += (size_t) rb->chunked->size;
rb->chunked->size = 0;

} else {
@@ -753,7 +753,7 @@ ngx_http_discard_request_body_filter(ngx
size = b->last - b->pos;

if ((off_t) size > r->headers_in.content_length_n) {
- b->pos += r->headers_in.content_length_n;
+ b->pos += (size_t) r->headers_in.content_length_n;
r->headers_in.content_length_n = 0;

} else {
@@ -866,7 +866,7 @@ ngx_http_request_body_length_filter(ngx_
rb->rest -= size;

} else {
- cl->buf->pos += rb->rest;
+ cl->buf->pos += (size_t) rb->rest;
rb->rest = 0;
b->last = cl->buf->pos;
b->last_buf = 1;
@@ -972,7 +972,7 @@ ngx_http_request_body_chunked_filter(ngx
size = cl->buf->last - cl->buf->pos;

if ((off_t) size > rb->chunked->size) {
- cl->buf->pos += rb->chunked->size;
+ cl->buf->pos += (size_t) rb->chunked->size;
r->headers_in.content_length_n += rb->chunked->size;
rb->chunked->size = 0;

diff --git a/src/os/win32/ngx_win32_config.h b/src/os/win32/ngx_win32_config.h
--- a/src/os/win32/ngx_win32_config.h
+++ b/src/os/win32/ngx_win32_config.h
@@ -146,6 +146,14 @@ typedef __int64 off_t;
typedef int dev_t;
typedef unsigned int ino_t;

+#elif __BORLANDC__
+
+/* off_t is redefined by sys/types.h used by zlib.h */
+#define __TYPES_H
+
+typedef int dev_t;
+typedef unsigned int ino_t;
+
#endif



_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[nginx] Win32: Borland C compatibility fixes.

Maxim Dounin 628 September 04, 2013 01:16PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 244
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready