Skip to content

Commit 0fac5be

Browse files
committed
fix compile warnings with gcc 4.8
1 parent d6b216b commit 0fac5be

6 files changed

+33
-16
lines changed

src/c/ngx_http_clojure_mem.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3326,7 +3326,7 @@ static jlong JNICALL jni_ngx_http_clojure_mem_get_chain_info(JNIEnv *env, jclass
33263326
flag |= NGX_CLOJURE_BUF_MEM_FLAG;
33273327
*pinfo++ = (uint64_t)flag << 56 | (cl->buf->last - cl->buf->pos);
33283328
len -= 8;
3329-
*pinfo++ = (uint64_t) cl->buf->pos;
3329+
*pinfo++ = (uint64_t)(uintptr_t) cl->buf->pos;
33303330
len -= 8;
33313331
}
33323332

src/c/ngx_http_clojure_shared_map.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@
88
#include <nginx.h>
99
#include <ngx_http.h>
1010

11+
#if defined(__GNUC__) && (__GNUC__ >= 4)
12+
#define NGX_CLOJURE_ATTR_MAY_ALIAS __attribute__((__may_alias__))
13+
#else
14+
#define NGX_CLOJURE_ATTR_MAY_ALIAS
15+
#endif
16+
1117
#define NGX_CLOJURE_SHARED_MAP_OK 0
1218
#define NGX_CLOJURE_SHARED_MAP_OUT_OF_MEM 1
1319
#define NGX_CLOJURE_SHARED_MAP_NOT_FOUND 2

src/c/ngx_http_clojure_shared_map_hashmap.c

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -194,12 +194,13 @@ static void ngx_http_clojure_shared_map_hashmap_invoke_value_handler_helper(ngx_
194194
static ngx_int_t ngx_http_clojure_shared_map_hashmap_set_key_helper(ngx_slab_pool_t *shpool, ngx_http_clojure_hashmap_entry_t *entry,
195195
const void *key, size_t klen) {
196196

197+
void *ek = &entry->key; /* *((uint64_t *)(void*)&entry->key) will cause gcc 4.4 warning*/
197198
switch (entry->ktype) {
198199
case NGX_CLOJURE_SHARED_MAP_JINT:
199-
*((uint32_t *)(void*)&entry->key) = *((uint32_t *)key);
200+
*((uint32_t *)ek) = *((uint32_t *)key);
200201
return NGX_CLOJURE_SHARED_MAP_OK;
201202
case NGX_CLOJURE_SHARED_MAP_JLONG:
202-
*((uint64_t *)(void*)&entry->key) = *((uint64_t *) key);
203+
*((uint64_t *)ek) = *((uint64_t *) key);
203204
return NGX_CLOJURE_SHARED_MAP_OK;
204205
case NGX_CLOJURE_SHARED_MAP_JSTRING:
205206
case NGX_CLOJURE_SHARED_MAP_JBYTEA:
@@ -219,6 +220,7 @@ static ngx_int_t ngx_http_clojure_shared_map_hashmap_set_value_helper(ngx_slab_p
219220
uint8_t vtype, const void *val, size_t vlen, ngx_http_clojure_shared_map_val_handler old_handler, void *handler_data) {
220221
void* oldv = NULL;
221222
size_t oldv_size = 0;
223+
void *ev = &entry->val; /* *((uint64_t *)(void*)&entry->val) will cause gcc 4.4 warning*/
222224

223225
switch (entry->vtype) {
224226
case NGX_CLOJURE_SHARED_MAP_JINT:
@@ -246,10 +248,10 @@ static ngx_int_t ngx_http_clojure_shared_map_hashmap_set_value_helper(ngx_slab_p
246248

247249
switch (vtype) {
248250
case NGX_CLOJURE_SHARED_MAP_JINT:
249-
*((uint32_t *)(void*)&entry->val) = *((uint32_t *)val);
251+
*((uint32_t *)ev) = *((uint32_t *)val);
250252
goto HANDLE_CPX_OLDV;
251253
case NGX_CLOJURE_SHARED_MAP_JLONG:
252-
*((uint64_t *)(void*)&entry->val) = *((uint64_t *) val);
254+
*((uint64_t *)ev) = *((uint64_t *) val);
253255
goto HANDLE_CPX_OLDV;
254256
case NGX_CLOJURE_SHARED_MAP_JSTRING:
255257
case NGX_CLOJURE_SHARED_MAP_JBYTEA:
@@ -278,17 +280,18 @@ static ngx_int_t ngx_http_clojure_shared_map_hashmap_set_value_helper(ngx_slab_p
278280
static ngx_int_t ngx_http_clojure_shared_map_hashmap_match_key(uint8_t ktype,
279281
const u_char *key, size_t klen, uint32_t hash,
280282
ngx_http_clojure_hashmap_entry_t *entry) {
283+
void *ek = &entry->key; /* *((uint64_t *)(void*)&entry->key) will cause gcc 4.4 warning*/
281284
if (ktype != entry->ktype) {
282285
return NGX_CLOJURE_SHARED_MAP_NOT_FOUND;
283286
}
284287
switch (ktype) {
285288
case NGX_CLOJURE_SHARED_MAP_JINT:
286-
if (*((uint32_t *)(void*)&entry->key) == *((uint32_t*) key)) {
289+
if (*((uint32_t *)ek) == *((uint32_t*) key)) {
287290
return NGX_CLOJURE_SHARED_MAP_OK;
288291
}
289292
break;
290293
case NGX_CLOJURE_SHARED_MAP_JLONG:
291-
if (*((uint64_t*)(void*)&entry->key) == *((uint64_t*) key)) {
294+
if (*((uint64_t*)ek) == *((uint64_t*) key)) {
292295
return NGX_CLOJURE_SHARED_MAP_OK;
293296
}
294297
break;
@@ -348,7 +351,8 @@ ngx_int_t ngx_http_clojure_shared_map_hashmap_put_entry(ngx_http_clojure_shared_
348351

349352
ngx_shmtx_lock(&ctx->shpool->mutex);
350353
for (pentry = &ctx->map->table[index_for(hash, ctx->entry_table_size)];
351-
(entry = *pentry) != NULL; pentry = &entry->next) {
354+
(entry = *pentry) != NULL;
355+
pentry = (void*)&entry->next) {
352356
if (NGX_CLOJURE_SHARED_MAP_OK == (rc = ngx_http_clojure_shared_map_hashmap_match_key(ktype, key, klen, hash, entry))) {
353357
rc = ngx_http_clojure_shared_map_hashmap_set_value_helper(ctx->shpool, entry, vtype, val, vlen, old_val_handler, handler_data);
354358
ngx_shmtx_unlock(&ctx->shpool->mutex);
@@ -403,7 +407,8 @@ ngx_int_t ngx_http_clojure_shared_map_hashmap_put_entry_if_absent(ngx_http_cloju
403407

404408
ngx_shmtx_lock(&ctx->shpool->mutex);
405409
for (pentry = &ctx->map->table[index_for(hash, ctx->entry_table_size)];
406-
(entry = *pentry) != NULL; pentry = &entry->next) {
410+
(entry = *pentry) != NULL;
411+
pentry = (void*)&entry->next) {
407412
if (NGX_CLOJURE_SHARED_MAP_OK == (rc = ngx_http_clojure_shared_map_hashmap_match_key(ktype, key, klen, hash, entry))) {
408413
if (old_val_handler) {
409414
ngx_http_clojure_shared_map_hashmap_invoke_value_handler_helper(entry, old_val_handler, handler_data);
@@ -462,7 +467,8 @@ ngx_int_t ngx_http_clojure_shared_map_hashmap_remove_entry(ngx_http_clojure_shar
462467

463468
ngx_shmtx_lock(&ctx->shpool->mutex);
464469
for (pentry = &ctx->map->table[index_for(hash, ctx->entry_table_size)];
465-
(entry = *pentry) != NULL; pentry = &entry->next) {
470+
(entry = *pentry) != NULL;
471+
pentry = (void*)&entry->next) {
466472
if (NGX_CLOJURE_SHARED_MAP_OK == (rc = ngx_http_clojure_shared_map_hashmap_match_key(ktype, key, klen, hash, entry))) {
467473
if (val_handler) {
468474
ngx_http_clojure_shared_map_hashmap_invoke_value_handler_helper(entry, val_handler, handler_data);

src/c/ngx_http_clojure_shared_map_hashmap.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#include "ngx_http_clojure_shared_map.h"
88

9+
910
typedef struct ngx_http_clojure_hashmap_entry_s {
1011
char *key;
1112
uint32_t ksize; /*key size*/
@@ -14,8 +15,9 @@ typedef struct ngx_http_clojure_hashmap_entry_s {
1415
char *val;
1516
uint32_t vsize; /*value size*/
1617
uint32_t hash;
17-
struct ngx_http_clojure_hashmap_entry_s *next;
18-
} ngx_http_clojure_hashmap_entry_t;
18+
struct ngx_http_clojure_hashmap_entry_s * next;
19+
} NGX_CLOJURE_ATTR_MAY_ALIAS ngx_http_clojure_hashmap_entry_t;
20+
1921

2022
typedef struct {
2123
ngx_atomic_uint_t size;

src/c/ngx_http_clojure_shared_map_tinymap.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,12 +146,13 @@ static void ngx_http_clojure_shared_map_tinymap_invoke_value_handler_helper(ngx_
146146
static ngx_int_t ngx_http_clojure_shared_map_tinymap_set_key_helper(ngx_slab_pool_t *shpool, ngx_http_clojure_tinymap_entry_t *entry,
147147
const void *key, size_t klen) {
148148
u_char *tmp;
149+
void *ek = &entry->key; /**((uint64_t *)(void*)&entry->key) will cause gcc 4.4 warning*/
149150
switch (entry->ktype) {
150151
case NGX_CLOJURE_SHARED_MAP_JINT:
151152
entry->key = *((uint32_t *)key);
152153
return NGX_CLOJURE_SHARED_MAP_OK;
153154
case NGX_CLOJURE_SHARED_MAP_JLONG:
154-
*((uint64_t *)(void*)&entry->key) = *((uint64_t *) key);
155+
*((uint64_t *)ek) = *((uint64_t *) key);
155156
return NGX_CLOJURE_SHARED_MAP_OK;
156157
case NGX_CLOJURE_SHARED_MAP_JSTRING:
157158
case NGX_CLOJURE_SHARED_MAP_JBYTEA:
@@ -174,6 +175,7 @@ static ngx_int_t ngx_http_clojure_shared_map_tinymap_set_value_helper(ngx_slab_p
174175
void* oldv = NULL;
175176
size_t oldv_size = 0;
176177
u_char *tmp;
178+
void *ev = &entry->val; /**((uint64_t *)(void*)&entry->key) will cause gcc 4.4 warning*/
177179
switch (entry->vtype) {
178180
case NGX_CLOJURE_SHARED_MAP_JINT:
179181
if (old_handler) {
@@ -204,7 +206,7 @@ static ngx_int_t ngx_http_clojure_shared_map_tinymap_set_value_helper(ngx_slab_p
204206
goto HANDLE_CPX_OLDV;
205207
case NGX_CLOJURE_SHARED_MAP_JLONG:
206208
entry->vtype = vtype;
207-
*((uint64_t *)(void*)&entry->val) = *((uint64_t *) val);
209+
*((uint64_t *)ev) = *((uint64_t *) val);
208210
goto HANDLE_CPX_OLDV;
209211
case NGX_CLOJURE_SHARED_MAP_JSTRING:
210212
case NGX_CLOJURE_SHARED_MAP_JBYTEA:
@@ -232,6 +234,7 @@ static ngx_int_t ngx_http_clojure_shared_map_tinymap_set_value_helper(ngx_slab_p
232234
static ngx_int_t ngx_http_clojure_shared_map_tinymap_match_key(uint8_t ktype,
233235
const u_char *key, size_t klen, uint32_t hash, ngx_slab_pool_t *shpool,
234236
ngx_http_clojure_tinymap_entry_t *entry) {
237+
void *ek = &entry->key; /**((uint64_t *)(void*)&entry->key) will cause gcc 4.4 warning*/
235238
if (ktype != entry->ktype) {
236239
return NGX_CLOJURE_SHARED_MAP_NOT_FOUND;
237240
}
@@ -242,7 +245,7 @@ static ngx_int_t ngx_http_clojure_shared_map_tinymap_match_key(uint8_t ktype,
242245
}
243246
break;
244247
case NGX_CLOJURE_SHARED_MAP_JLONG:
245-
if (*((uint64_t*)(void*)&entry->key) == *((uint64_t*) key)) {
248+
if (*((uint64_t*)ek) == *((uint64_t*) key)) {
246249
return NGX_CLOJURE_SHARED_MAP_OK;
247250
}
248251
break;

src/c/ngx_http_clojure_shared_map_tinymap.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ typedef struct ngx_http_clojure_tinymap_entry_s {
1919
uint32_t val;
2020
uint32_t vsize; /*value size*/
2121
uint32_t next;
22-
} ngx_http_clojure_tinymap_entry_t;
22+
} NGX_CLOJURE_ATTR_MAY_ALIAS ngx_http_clojure_tinymap_entry_t;
2323

2424
typedef struct {
2525
ngx_atomic_uint_t size;

0 commit comments

Comments
 (0)