[glib: 1/2] Do not use ensure_valid_* call in g_return_* macro
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib: 1/2] Do not use ensure_valid_* call in g_return_* macro
- Date: Fri, 4 Mar 2022 14:04:03 +0000 (UTC)
commit 340bc1ca799713da6d59eddf8611cfa62040c973
Author: Alexander Klauer <alexander klauer googlemail com>
Date: Fri Mar 4 14:04:02 2022 +0000
Do not use ensure_valid_* call in g_return_* macro
Replace all instances of ensure_valid_builder or ensure_valid_dict
calls used as arguments to the g_return_if_fail or
g_return_value_if_fail macros with otherwise equivalent code that
always calls these functions, thus ensuring their side effects always
apply. This commit does not change any external or private interfaces.
Fixes #2612
glib/gvariant.c | 62 +++++++++++++++++++++++++++++++++++++++++++++------------
1 file changed, 49 insertions(+), 13 deletions(-)
---
diff --git a/glib/gvariant.c b/glib/gvariant.c
index 5fa6a8268..42ffc9a87 100644
--- a/glib/gvariant.c
+++ b/glib/gvariant.c
@@ -3225,6 +3225,24 @@ ensure_valid_builder (GVariantBuilder *builder)
return is_valid_builder (builder);
}
+/* return_if_invalid_builder (b) is like
+ * g_return_if_fail (ensure_valid_builder (b)), except that
+ * the side effects of ensure_valid_builder are evaluated
+ * regardless of whether G_DISABLE_CHECKS is defined or not. */
+#define return_if_invalid_builder(b) G_STMT_START { \
+ gboolean valid_builder G_GNUC_UNUSED = ensure_valid_builder (b); \
+ g_return_if_fail (valid_builder); \
+} G_STMT_END
+
+/* return_val_if_invalid_builder (b, val) is like
+ * g_return_val_if_fail (ensure_valid_builder (b), val), except that
+ * the side effects of ensure_valid_builder are evaluated
+ * regardless of whether G_DISABLE_CHECKS is defined or not. */
+#define return_val_if_invalid_builder(b, val) G_STMT_START { \
+ gboolean valid_builder G_GNUC_UNUSED = ensure_valid_builder (b); \
+ g_return_val_if_fail (valid_builder, val); \
+} G_STMT_END
+
/**
* g_variant_builder_new:
* @type: a container type
@@ -3337,7 +3355,7 @@ g_variant_builder_clear (GVariantBuilder *builder)
/* all-zeros or partial case */
return;
- g_return_if_fail (ensure_valid_builder (builder));
+ return_if_invalid_builder (builder);
g_variant_type_free (GVSB(builder)->type);
@@ -3500,7 +3518,7 @@ void
g_variant_builder_add_value (GVariantBuilder *builder,
GVariant *value)
{
- g_return_if_fail (ensure_valid_builder (builder));
+ return_if_invalid_builder (builder);
g_return_if_fail (GVSB(builder)->offset < GVSB(builder)->max_items);
g_return_if_fail (!GVSB(builder)->expected_type ||
g_variant_is_of_type (value,
@@ -3581,7 +3599,7 @@ g_variant_builder_open (GVariantBuilder *builder,
{
GVariantBuilder *parent;
- g_return_if_fail (ensure_valid_builder (builder));
+ return_if_invalid_builder (builder);
g_return_if_fail (GVSB(builder)->offset < GVSB(builder)->max_items);
g_return_if_fail (!GVSB(builder)->expected_type ||
g_variant_type_is_subtype_of (type,
@@ -3627,7 +3645,7 @@ g_variant_builder_close (GVariantBuilder *builder)
{
GVariantBuilder *parent;
- g_return_if_fail (ensure_valid_builder (builder));
+ return_if_invalid_builder (builder);
g_return_if_fail (GVSB(builder)->parent != NULL);
parent = GVSB(builder)->parent;
@@ -3695,7 +3713,7 @@ g_variant_builder_end (GVariantBuilder *builder)
GVariantType *my_type;
GVariant *value;
- g_return_val_if_fail (ensure_valid_builder (builder), NULL);
+ return_val_if_invalid_builder (builder, NULL);
g_return_val_if_fail (GVSB(builder)->offset >= GVSB(builder)->min_items,
NULL);
g_return_val_if_fail (!GVSB(builder)->uniform_item_types ||
@@ -3883,6 +3901,24 @@ ensure_valid_dict (GVariantDict *dict)
return is_valid_dict (dict);
}
+/* return_if_invalid_dict (d) is like
+ * g_return_if_fail (ensure_valid_dict (d)), except that
+ * the side effects of ensure_valid_dict are evaluated
+ * regardless of whether G_DISABLE_CHECKS is defined or not. */
+#define return_if_invalid_dict(d) G_STMT_START { \
+ gboolean valid_dict G_GNUC_UNUSED = ensure_valid_dict (d); \
+ g_return_if_fail (valid_dict); \
+} G_STMT_END
+
+/* return_val_if_invalid_dict (d, val) is like
+ * g_return_val_if_fail (ensure_valid_dict (d), val), except that
+ * the side effects of ensure_valid_dict are evaluated
+ * regardless of whether G_DISABLE_CHECKS is defined or not. */
+#define return_val_if_invalid_dict(d, val) G_STMT_START { \
+ gboolean valid_dict G_GNUC_UNUSED = ensure_valid_dict (d); \
+ g_return_val_if_fail (valid_dict, val); \
+} G_STMT_END
+
/**
* g_variant_dict_new:
* @from_asv: (nullable): the #GVariant with which to initialise the
@@ -3990,7 +4026,7 @@ g_variant_dict_lookup (GVariantDict *dict,
GVariant *value;
va_list ap;
- g_return_val_if_fail (ensure_valid_dict (dict), FALSE);
+ return_val_if_invalid_dict (dict, FALSE);
g_return_val_if_fail (key != NULL, FALSE);
g_return_val_if_fail (format_string != NULL, FALSE);
@@ -4035,7 +4071,7 @@ g_variant_dict_lookup_value (GVariantDict *dict,
{
GVariant *result;
- g_return_val_if_fail (ensure_valid_dict (dict), NULL);
+ return_val_if_invalid_dict (dict, NULL);
g_return_val_if_fail (key != NULL, NULL);
result = g_hash_table_lookup (GVSD(dict)->values, key);
@@ -4061,7 +4097,7 @@ gboolean
g_variant_dict_contains (GVariantDict *dict,
const gchar *key)
{
- g_return_val_if_fail (ensure_valid_dict (dict), FALSE);
+ return_val_if_invalid_dict (dict, FALSE);
g_return_val_if_fail (key != NULL, FALSE);
return g_hash_table_contains (GVSD(dict)->values, key);
@@ -4089,7 +4125,7 @@ g_variant_dict_insert (GVariantDict *dict,
{
va_list ap;
- g_return_if_fail (ensure_valid_dict (dict));
+ return_if_invalid_dict (dict);
g_return_if_fail (key != NULL);
g_return_if_fail (format_string != NULL);
@@ -4115,7 +4151,7 @@ g_variant_dict_insert_value (GVariantDict *dict,
const gchar *key,
GVariant *value)
{
- g_return_if_fail (ensure_valid_dict (dict));
+ return_if_invalid_dict (dict);
g_return_if_fail (key != NULL);
g_return_if_fail (value != NULL);
@@ -4137,7 +4173,7 @@ gboolean
g_variant_dict_remove (GVariantDict *dict,
const gchar *key)
{
- g_return_val_if_fail (ensure_valid_dict (dict), FALSE);
+ return_val_if_invalid_dict (dict, FALSE);
g_return_val_if_fail (key != NULL, FALSE);
return g_hash_table_remove (GVSD(dict)->values, key);
@@ -4171,7 +4207,7 @@ g_variant_dict_clear (GVariantDict *dict)
/* all-zeros case */
return;
- g_return_if_fail (ensure_valid_dict (dict));
+ return_if_invalid_dict (dict);
g_hash_table_unref (GVSD(dict)->values);
GVSD(dict)->values = NULL;
@@ -4202,7 +4238,7 @@ g_variant_dict_end (GVariantDict *dict)
GHashTableIter iter;
gpointer key, value;
- g_return_val_if_fail (ensure_valid_dict (dict), NULL);
+ return_val_if_invalid_dict (dict, NULL);
g_variant_builder_init (&builder, G_VARIANT_TYPE_VARDICT);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]