From 99178b63297e3a610d55bc529bd610d04b3a6b32 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Wed, 24 Jan 2018 13:10:14 +1100 Subject: [PATCH] 4875. [bug] Address compile failures on older systems. [RT #47015] --- CHANGES | 2 ++ lib/isc/ht.c | 12 +++++++----- lib/isc/include/isc/deprecated.h | 4 ++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/CHANGES b/CHANGES index e21066917a..65871f42d6 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,5 @@ +4875. [bug] Address compile failures on older systems. [RT #47015] + 4874. [bug] Wrong time display when reporting new keywarntime. [RT #47042] diff --git a/lib/isc/ht.c b/lib/isc/ht.c index a20642a1c5..2b631a2e50 100644 --- a/lib/isc/ht.c +++ b/lib/isc/ht.c @@ -28,7 +28,7 @@ struct isc_ht_node { void *value; isc_ht_node_t *next; size_t keysize; - unsigned char key[]; + unsigned char key[FLEXIBLE_ARRAY_MEMBER]; }; struct isc_ht { @@ -101,7 +101,8 @@ isc_ht_destroy(isc_ht_t **htp) { isc_ht_node_t *next = node->next; ht->count--; isc_mem_put(ht->mctx, node, - sizeof(isc_ht_node_t) + node->keysize); + offsetof(isc_ht_node_t, key) + + node->keysize); node = next; } } @@ -134,7 +135,7 @@ isc_ht_add(isc_ht_t *ht, const unsigned char *key, node = node->next; } - node = isc_mem_get(ht->mctx, sizeof(isc_ht_node_t) + keysize); + node = isc_mem_get(ht->mctx, offsetof(isc_ht_node_t, key) + keysize); if (node == NULL) return (ISC_R_NOMEMORY); @@ -193,7 +194,8 @@ isc_ht_delete(isc_ht_t *ht, const unsigned char *key, isc_uint32_t keysize) { else prev->next = node->next; isc_mem_put(ht->mctx, node, - sizeof(isc_ht_node_t) + node->keysize); + offsetof(isc_ht_node_t, key) + + node->keysize); ht->count--; return (ISC_R_SUCCESS); @@ -311,7 +313,7 @@ isc_ht_iter_delcurrent_next(isc_ht_iter_t *it) { else prev->next = node->next; isc_mem_put(ht->mctx, node, - sizeof(isc_ht_node_t) + node->keysize); + offsetof(isc_ht_node_t, key) + node->keysize); ht->count--; return (result); diff --git a/lib/isc/include/isc/deprecated.h b/lib/isc/include/isc/deprecated.h index 928751da27..f011f647cc 100644 --- a/lib/isc/include/isc/deprecated.h +++ b/lib/isc/include/isc/deprecated.h @@ -10,10 +10,10 @@ #ifndef ISC_DEPRECATED_H #define ISC_DEPRECATED_H -#ifdef __GNUC__ +#if (__GNUC__ + 0) > 3 #define ISC_DEPRECATED __attribute__((deprecated)) #else #define ISC_DEPRECATED /* none */ -#endif /* __GNUC __ */ +#endif /* __GNUC__ > 3*/ #endif