Message ID | 1458614246-28528-1-git-send-email-peterx@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Peter Xu <peterx@redhat.com> writes: > Here we use one g_strdup_printf() to replace the two stack allocated > array, considering it's more convenient, safe, and as long as it's > called rarely only when quorum device opens. This will remove the > unbound stack warning when compiling with "-Wstack-usage=1000000". > > Reviewed-by: Eric Blake <eblake@redhat.com> > Signed-off-by: Peter Xu <peterx@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> I lack the time to take this through my tree before my Easter vacation. Nominating for qemu-trivial, assuming Luiz doesn't mind.
22.03.2016 18:39, Markus Armbruster wrote: > Peter Xu <peterx@redhat.com> writes: > >> Here we use one g_strdup_printf() to replace the two stack allocated >> array, considering it's more convenient, safe, and as long as it's >> called rarely only when quorum device opens. This will remove the >> unbound stack warning when compiling with "-Wstack-usage=1000000". >> >> Reviewed-by: Eric Blake <eblake@redhat.com> >> Signed-off-by: Peter Xu <peterx@redhat.com> > > Reviewed-by: Markus Armbruster <armbru@redhat.com> > > I lack the time to take this through my tree before my Easter vacation. > Nominating for qemu-trivial, assuming Luiz doesn't mind. (Finally) applied to -trivial, thanks! /mjt
diff --git a/qobject/qdict.c b/qobject/qdict.c index 9833bd0..fe6ffa1 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] = 0; + 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; }