commit df914aa: [Minor] Polish alignment macros
Vsevolod Stakhov
vsevolod at highsecure.ru
Mon Dec 6 11:42:04 UTC 2021
Author: Vsevolod Stakhov
Date: 2021-12-06 11:39:54 +0000
URL: https://github.com/rspamd/rspamd/commit/df914aa64f9f9b6c5a472a438f5d6f7991d26068 (HEAD -> master)
[Minor] Polish alignment macros
---
config.h.in | 11 +++++++++++
src/libcryptobox/cryptobox.c | 6 +++---
src/libserver/re_cache.c | 2 +-
src/libutil/mem_pool.h | 6 +-----
src/libutil/multipattern.c | 4 ++--
src/libutil/str_util.h | 2 +-
6 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/config.h.in b/config.h.in
index d6a3fc1d0..9487fd76e 100644
--- a/config.h.in
+++ b/config.h.in
@@ -322,6 +322,17 @@ typedef off_t goffset;
#endif
#endif
+#ifndef __cplusplus
+# ifdef G_ALIGNOF
+# define RSPAMD_ALIGNOF G_ALIGNOF
+# else
+# define RSPAMD_ALIGNOF(t) _Alignof(t)
+# endif
+#else
+/* glib G_ALIGNOF nor C11 _Alignof are not good enough for C++, nuff said... */
+# define RSPAMD_ALIGNOF(t) alignof(t)
+#endif
+
/* Address sanitizer */
#ifdef __clang__
# if __has_feature(address_sanitizer)
diff --git a/src/libcryptobox/cryptobox.c b/src/libcryptobox/cryptobox.c
index fe4d3df29..41f13ed73 100644
--- a/src/libcryptobox/cryptobox.c
+++ b/src/libcryptobox/cryptobox.c
@@ -588,7 +588,7 @@ static gsize
rspamd_cryptobox_auth_ctx_len (enum rspamd_cryptobox_mode mode)
{
if (G_LIKELY (mode == RSPAMD_CRYPTOBOX_MODE_25519)) {
- return sizeof (crypto_onetimeauth_state) + _Alignof (crypto_onetimeauth_state);
+ return sizeof (crypto_onetimeauth_state) + RSPAMD_ALIGNOF(crypto_onetimeauth_state);
}
else {
#ifndef HAVE_USABLE_OPENSSL
@@ -1440,7 +1440,7 @@ void
rspamd_cryptobox_hash_init (rspamd_cryptobox_hash_state_t *p, const guchar *key, gsize keylen)
{
crypto_generichash_blake2b_state *st = cryptobox_align_ptr (p,
- _Alignof(crypto_generichash_blake2b_state));
+ RSPAMD_ALIGNOF(crypto_generichash_blake2b_state));
crypto_generichash_blake2b_init (st, key, keylen,
crypto_generichash_blake2b_BYTES_MAX);
}
@@ -1452,7 +1452,7 @@ void
rspamd_cryptobox_hash_update (rspamd_cryptobox_hash_state_t *p, const guchar *data, gsize len)
{
crypto_generichash_blake2b_state *st = cryptobox_align_ptr (p,
- _Alignof(crypto_generichash_blake2b_state));
+ RSPAMD_ALIGNOF(crypto_generichash_blake2b_state));
crypto_generichash_blake2b_update (st, data, len);
}
diff --git a/src/libserver/re_cache.c b/src/libserver/re_cache.c
index 3016d04c5..2c5555154 100644
--- a/src/libserver/re_cache.c
+++ b/src/libserver/re_cache.c
@@ -406,7 +406,7 @@ rspamd_re_cache_init (struct rspamd_re_cache *cache, struct rspamd_config *cfg)
rspamd_regexp_set_cache_id (re, i);
if (re_class->st == NULL) {
- (void) !posix_memalign ((void **)&re_class->st, _Alignof (rspamd_cryptobox_hash_state_t),
+ (void) !posix_memalign ((void **)&re_class->st, RSPAMD_ALIGNOF(rspamd_cryptobox_hash_state_t),
sizeof (*re_class->st));
g_assert (re_class->st != NULL);
rspamd_cryptobox_hash_init (re_class->st, NULL, 0);
diff --git a/src/libutil/mem_pool.h b/src/libutil/mem_pool.h
index 2db36e03a..c369f116a 100644
--- a/src/libutil/mem_pool.h
+++ b/src/libutil/mem_pool.h
@@ -68,11 +68,7 @@ struct f_str_s;
#define MEMPOOL_UID_LEN 20
/* All pointers are aligned as this variable */
#define MIN_MEM_ALIGNMENT G_MEM_ALIGN
-#ifndef __cplusplus
-#define RSPAMD_ALIGNOF G_ALIGNOF
-#else
-#define RSPAMD_ALIGNOF(t) alignof(t)
-#endif
+
/**
* Destructor type definition
*/
diff --git a/src/libutil/multipattern.c b/src/libutil/multipattern.c
index 2842b1d59..8f959f486 100644
--- a/src/libutil/multipattern.c
+++ b/src/libutil/multipattern.c
@@ -256,7 +256,7 @@ rspamd_multipattern_create (enum rspamd_multipattern_flags flags)
struct rspamd_multipattern *mp;
/* Align due to blake2b state */
- (void) !posix_memalign((void **)&mp, _Alignof (struct rspamd_multipattern),
+ (void) !posix_memalign((void **)&mp, RSPAMD_ALIGNOF(struct rspamd_multipattern),
sizeof (*mp));
g_assert (mp != NULL);
memset (mp, 0, sizeof (*mp));
@@ -285,7 +285,7 @@ rspamd_multipattern_create_sized (guint npatterns,
struct rspamd_multipattern *mp;
/* Align due to blake2b state */
- (void) !posix_memalign((void **)&mp, _Alignof (struct rspamd_multipattern), sizeof (*mp));
+ (void) !posix_memalign((void **)&mp, RSPAMD_ALIGNOF(struct rspamd_multipattern), sizeof (*mp));
g_assert (mp != NULL);
memset (mp, 0, sizeof (*mp));
mp->flags = flags;
diff --git a/src/libutil/str_util.h b/src/libutil/str_util.h
index b08dd56ad..47abf062e 100644
--- a/src/libutil/str_util.h
+++ b/src/libutil/str_util.h
@@ -473,7 +473,7 @@ gsize rspamd_memspn (const gchar *s, const gchar *e, gsize len);
* Check if a pointer is aligned; n must be power of two
*/
#define rspamd_is_aligned(p, n) (((uintptr_t)(p) & ((uintptr_t)(n) - 1)) == 0)
-#define rspamd_is_aligned_as(p, v) rspamd_is_aligned(p, _Alignof(__typeof((v))))
+#define rspamd_is_aligned_as(p, v) rspamd_is_aligned(p, RSPAMD_ALIGNOF(__typeof((v))))
gboolean rspamd_str_has_8bit (const guchar *beg, gsize len);
struct UConverter;
More information about the Commits
mailing list