[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 2/2] qapi: g_hash_table_find() instead of GHashTableI
From: |
Luiz Capitulino |
Subject: |
[Qemu-devel] [PULL 2/2] qapi: g_hash_table_find() instead of GHashTableIter. |
Date: |
Mon, 23 Apr 2012 13:20:46 -0300 |
From: "NODA, Kai" <address@hidden>
GHashTableIter was first introduced in glib 2.16.
This patch removes it in favor of older g_hash_table_find()
for better compatibility with RHEL5.
Signed-off-by: NODA, Kai <address@hidden>
Signed-off-by: Luiz Capitulino <address@hidden>
---
qapi/qmp-input-visitor.c | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/qapi/qmp-input-visitor.c b/qapi/qmp-input-visitor.c
index 74386b9..4cdc47d 100644
--- a/qapi/qmp-input-visitor.c
+++ b/qapi/qmp-input-visitor.c
@@ -87,20 +87,29 @@ static void qmp_input_push(QmpInputVisitor *qiv, QObject
*obj, Error **errp)
qiv->nb_stack++;
}
+/** Only for qmp_input_pop. */
+static gboolean always_true(gpointer key, gpointer val, gpointer user_pkey)
+{
+ *(const char **)user_pkey = (const char *)key;
+ return TRUE;
+}
+
static void qmp_input_pop(QmpInputVisitor *qiv, Error **errp)
{
- GHashTableIter iter;
- gpointer key;
+ assert(qiv->nb_stack > 0);
- if (qiv->strict && qiv->stack[qiv->nb_stack - 1].h) {
- g_hash_table_iter_init(&iter, qiv->stack[qiv->nb_stack - 1].h);
- if (g_hash_table_iter_next(&iter, &key, NULL)) {
- error_set(errp, QERR_QMP_EXTRA_MEMBER, (char *) key);
+ if (qiv->strict) {
+ GHashTable * const top_ht = qiv->stack[qiv->nb_stack - 1].h;
+ if (top_ht) {
+ if (g_hash_table_size(top_ht)) {
+ const char *key;
+ g_hash_table_find(top_ht, always_true, &key);
+ error_set(errp, QERR_QMP_EXTRA_MEMBER, key);
+ }
+ g_hash_table_unref(top_ht);
}
- g_hash_table_unref(qiv->stack[qiv->nb_stack - 1].h);
}
- assert(qiv->nb_stack > 0);
qiv->nb_stack--;
}
--
1.7.9.2.384.g4a92a