Signed-off-by: Peter Xu <pet...@redhat.com> --- qobject/qdict.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/qobject/qdict.c b/qobject/qdict.c index 9833bd0..9188a87 100644 --- a/qobject/qdict.c +++ b/qobject/qdict.c @@ -704,19 +704,16 @@ int qdict_array_entries(QDict *src, const char *subqdict) for (i = 0; i < INT_MAX; i++) { QObject *subqobj; int subqdict_entries; - size_t slen = 32 + subqdict_len; - char indexstr[slen], prefix[slen]; - size_t snprintf_ret; + char *prefix = g_strdup_printf("%s%u.", subqdict, i); - snprintf_ret = snprintf(indexstr, slen, "%s%u", subqdict, i); - assert(snprintf_ret < slen); + subqdict_entries = qdict_count_prefixed_entries(src, prefix); - subqobj = qdict_get(src, indexstr); + /* Remove ending "." */ + prefix[strlen(prefix) - 1] = 0x00; + subqobj = qdict_get(src, prefix); - snprintf_ret = snprintf(prefix, slen, "%s%u.", subqdict, i); - assert(snprintf_ret < slen); + g_free(prefix); - subqdict_entries = qdict_count_prefixed_entries(src, prefix); if (subqdict_entries < 0) { return subqdict_entries; } -- 2.4.3