diff options
author | Thomas Haller <thaller@redhat.com> | 2021-02-15 10:04:52 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2021-02-15 10:20:39 +0100 |
commit | ac1c66eb343693cb63b8624b4be6088e1583670e (patch) | |
tree | c6743604d675fabafe9d7da83cf91ac4a3e47428 | |
parent | 3ceec9c6ac399b849fcabc52cf58e9001a6b8684 (diff) | |
download | NetworkManager-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.c | 24 |
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); + } } /** |