shared: split redefining g_return* warning out of "nm-default.h"

It's confusing enough. Let's keep "nm-default.h" simpler.
Especially due to the nesting of #if, which clang-format wants
to indent.
This commit is contained in:
Thomas Haller 2021-01-27 17:05:42 +01:00
parent be9ed624a9
commit 5d85d7c849
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728
3 changed files with 78 additions and 66 deletions

View file

@ -5436,6 +5436,7 @@ EXTRA_DIST += \
po/meson.build \
\
shared/nm-default.h \
shared/nm-gassert-patch.h \
shared/nm-test-libnm-utils.h \
shared/nm-test-utils-impl.c \
shared/nm-utils/nm-compat.c \

View file

@ -196,72 +196,7 @@
/*****************************************************************************/
#if NM_MORE_ASSERTS == 0
/* glib assertions (g_return_*(), g_assert*()) contain a textual representation
* of the checked statement. This part of the assertion blows up the size of the
* binary. Unless we compile a debug-build with NM_MORE_ASSERTS, drop these
* parts. Note that the failed assertion still prints the file and line where the
* assertion fails. That shall suffice. */
static inline void
_nm_g_return_if_fail_warning(const char *log_domain, const char *file, int line)
{
char file_buf[256 + 15];
g_snprintf(file_buf, sizeof(file_buf), "((%s:%d))", file, line);
g_return_if_fail_warning(log_domain, file_buf, "<dropped>");
}
#define g_return_if_fail_warning(log_domain, pretty_function, expression) \
_nm_g_return_if_fail_warning(log_domain, __FILE__, __LINE__)
#define g_assertion_message_expr(domain, file, line, func, expr) \
g_assertion_message_expr(domain, \
file, \
line, \
"<unknown-fcn>", \
(expr) ? "<dropped>" : NULL)
#undef g_return_val_if_reached
#define g_return_val_if_reached(val) \
G_STMT_START \
{ \
g_log(G_LOG_DOMAIN, \
G_LOG_LEVEL_CRITICAL, \
"file %s: line %d (%s): should not be reached", \
__FILE__, \
__LINE__, \
"<dropped>"); \
return (val); \
} \
G_STMT_END
#undef g_return_if_reached
#define g_return_if_reached() \
G_STMT_START \
{ \
g_log(G_LOG_DOMAIN, \
G_LOG_LEVEL_CRITICAL, \
"file %s: line %d (%s): should not be reached", \
__FILE__, \
__LINE__, \
"<dropped>"); \
return; \
} \
G_STMT_END
#define NM_ASSERT_G_RETURN_EXPR(expr) "<dropped>"
#define NM_ASSERT_NO_MSG 1
#else
#define NM_ASSERT_G_RETURN_EXPR(expr) "" expr ""
#define NM_ASSERT_NO_MSG 0
#endif
/*****************************************************************************/
#include "nm-gassert-patch.h"
#include "nm-std-aux/nm-std-aux.h"
#include "nm-std-aux/nm-std-utils.h"

76
shared/nm-gassert-patch.h Normal file
View file

@ -0,0 +1,76 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Copyright (C) 2015 Red Hat, Inc.
*/
#ifndef __NM_GASSERT_PATCH_H__
#define __NM_GASSERT_PATCH_H__
/*****************************************************************************/
#if NM_MORE_ASSERTS == 0
/* glib assertions (g_return_*(), g_assert*()) contain a textual representation
* of the checked statement. This part of the assertion blows up the size of the
* binary. Unless we compile a debug-build with NM_MORE_ASSERTS, drop these
* parts. Note that the failed assertion still prints the file and line where the
* assertion fails. That shall suffice. */
static inline void
_nm_g_return_if_fail_warning(const char *log_domain, const char *file, int line)
{
char file_buf[256 + 15];
g_snprintf(file_buf, sizeof(file_buf), "((%s:%d))", file, line);
g_return_if_fail_warning(log_domain, file_buf, "<dropped>");
}
#define g_return_if_fail_warning(log_domain, pretty_function, expression) \
_nm_g_return_if_fail_warning(log_domain, __FILE__, __LINE__)
#define g_assertion_message_expr(domain, file, line, func, expr) \
g_assertion_message_expr(domain, file, line, "<unknown-fcn>", (expr) ? "<dropped>" : NULL)
#undef g_return_val_if_reached
#define g_return_val_if_reached(val) \
G_STMT_START \
{ \
g_log(G_LOG_DOMAIN, \
G_LOG_LEVEL_CRITICAL, \
"file %s: line %d (%s): should not be reached", \
__FILE__, \
__LINE__, \
"<dropped>"); \
return (val); \
} \
G_STMT_END
#undef g_return_if_reached
#define g_return_if_reached() \
G_STMT_START \
{ \
g_log(G_LOG_DOMAIN, \
G_LOG_LEVEL_CRITICAL, \
"file %s: line %d (%s): should not be reached", \
__FILE__, \
__LINE__, \
"<dropped>"); \
return; \
} \
G_STMT_END
#endif
/*****************************************************************************/
#if NM_MORE_ASSERTS == 0
#define NM_ASSERT_G_RETURN_EXPR(expr) "<dropped>"
#define NM_ASSERT_NO_MSG 1
#else
#define NM_ASSERT_G_RETURN_EXPR(expr) "" expr ""
#define NM_ASSERT_NO_MSG 0
#endif
/*****************************************************************************/
#endif /* __NM_GASSERT_PATCH_H__ */