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:24:34 +0100 |
commit | a18155fc239c22b857c135208134457e7525ded3 (patch) | |
tree | e3984f76ad16bef02ede8479b91cfc5e372d1964 /shared | |
parent | 4a50d5a44893f182af21d5a36d4d17b36e845b87 (diff) | |
download | NetworkManager-a18155fc239c22b857c135208134457e7525ded3.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.
(cherry picked from commit ac1c66eb343693cb63b8624b4be6088e1583670e)
Diffstat (limited to 'shared')
-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); + } } /** |