mirror of https://github.com/xemu-project/xemu.git
block-qdict: Pacify Coverity after commit f1b34a248e
Commit f1b34a248e
replaced less-than-obvious test in
qdict_flatten_qdict() by the obvious one. Sadly, it made something
else non-obvious: the fact that @new_key passed to qdict_put_obj()
can't be null, because that depends on the function's precondition
(target == qdict) == !prefix.
Tweak the function some more to help Coverity and human readers alike.
Fixes: CID 1393620
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
609ef9f451
commit
17e9aa3f22
|
@ -97,7 +97,7 @@ static void qdict_flatten_qdict(QDict *qdict, QDict *target, const char *prefix)
|
||||||
const QDictEntry *entry, *next;
|
const QDictEntry *entry, *next;
|
||||||
QDict *dict_val;
|
QDict *dict_val;
|
||||||
QList *list_val;
|
QList *list_val;
|
||||||
char *new_key;
|
char *key, *new_key;
|
||||||
|
|
||||||
entry = qdict_first(qdict);
|
entry = qdict_first(qdict);
|
||||||
|
|
||||||
|
@ -106,10 +106,12 @@ static void qdict_flatten_qdict(QDict *qdict, QDict *target, const char *prefix)
|
||||||
value = qdict_entry_value(entry);
|
value = qdict_entry_value(entry);
|
||||||
dict_val = qobject_to(QDict, value);
|
dict_val = qobject_to(QDict, value);
|
||||||
list_val = qobject_to(QList, value);
|
list_val = qobject_to(QList, value);
|
||||||
new_key = NULL;
|
|
||||||
|
|
||||||
if (prefix) {
|
if (prefix) {
|
||||||
new_key = g_strdup_printf("%s.%s", prefix, entry->key);
|
key = new_key = g_strdup_printf("%s.%s", prefix, entry->key);
|
||||||
|
} else {
|
||||||
|
key = entry->key;
|
||||||
|
new_key = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -125,19 +127,17 @@ static void qdict_flatten_qdict(QDict *qdict, QDict *target, const char *prefix)
|
||||||
* well advised not to modify them altogether.)
|
* well advised not to modify them altogether.)
|
||||||
*/
|
*/
|
||||||
if (dict_val && qdict_size(dict_val)) {
|
if (dict_val && qdict_size(dict_val)) {
|
||||||
qdict_flatten_qdict(dict_val, target,
|
qdict_flatten_qdict(dict_val, target, key);
|
||||||
new_key ? new_key : entry->key);
|
|
||||||
if (target == qdict) {
|
if (target == qdict) {
|
||||||
qdict_del(qdict, entry->key);
|
qdict_del(qdict, entry->key);
|
||||||
}
|
}
|
||||||
} else if (list_val && !qlist_empty(list_val)) {
|
} else if (list_val && !qlist_empty(list_val)) {
|
||||||
qdict_flatten_qlist(list_val, target,
|
qdict_flatten_qlist(list_val, target, key);
|
||||||
new_key ? new_key : entry->key);
|
|
||||||
if (target == qdict) {
|
if (target == qdict) {
|
||||||
qdict_del(qdict, entry->key);
|
qdict_del(qdict, entry->key);
|
||||||
}
|
}
|
||||||
} else if (target != qdict) {
|
} else if (target != qdict) {
|
||||||
qdict_put_obj(target, new_key, qobject_ref(value));
|
qdict_put_obj(target, key, qobject_ref(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free(new_key);
|
g_free(new_key);
|
||||||
|
|
Loading…
Reference in New Issue