summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2021-02-15 10:04:52 +0100
committerThomas Haller <thaller@redhat.com>2021-02-15 10:20:39 +0100
commitac1c66eb343693cb63b8624b4be6088e1583670e (patch)
treec6743604d675fabafe9d7da83cf91ac4a3e47428
parent3ceec9c6ac399b849fcabc52cf58e9001a6b8684 (diff)
downloadNetworkManager-ac1c66eb343693cb63b8624b4be6088e1583670e.tar.gz
shared: refactor nm_assert() for NMRefString
- also check consistency of the string. - disable more expensive check unless running with NM_MORE_ASSERTS>10.
-rw-r--r--shared/nm-glib-aux/nm-ref-string.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/shared/nm-glib-aux/nm-ref-string.c b/shared/nm-glib-aux/nm-ref-string.c
index 902f1c802a..1084c47f8a 100644
--- a/shared/nm-glib-aux/nm-ref-string.c
+++ b/shared/nm-glib-aux/nm-ref-string.c
@@ -49,20 +49,28 @@ _ref_string_equal(gconstpointer pa, gconstpointer pb)
static void
_ASSERT(const RefString *rstr0)
{
-#if NM_MORE_ASSERTS
int r;
nm_assert(rstr0);
- G_LOCK(gl_lock);
- r = g_atomic_int_get(&rstr0->ref_count);
+ if (NM_MORE_ASSERTS > 0) {
+ r = g_atomic_int_get(&rstr0->ref_count);
+ nm_assert(r > 0);
+ nm_assert(r < G_MAXINT);
+ }
- nm_assert(r > 0);
- nm_assert(r < G_MAXINT);
+ nm_assert(rstr0->r.str == rstr0->str_data);
+ nm_assert(rstr0->r.str[rstr0->r.len] == '\0');
- nm_assert(rstr0 == g_hash_table_lookup(gl_hash, rstr0));
- G_UNLOCK(gl_lock);
-#endif
+ if (NM_MORE_ASSERTS > 10) {
+ G_LOCK(gl_lock);
+ r = g_atomic_int_get(&rstr0->ref_count);
+ nm_assert(r > 0);
+ nm_assert(r < G_MAXINT);
+
+ nm_assert(rstr0 == g_hash_table_lookup(gl_hash, rstr0));
+ G_UNLOCK(gl_lock);
+ }
}
/**