Fix JSON-mode output for !config_stats and/or !config_prof cases.

These bugs were introduced by 0ba5b9b618
(Add "J" (JSON) support to malloc_stats_print().), which was backported
as b599b32280 (with the same bugs except
the inapplicable "metatata" misspelling) and first released in 4.3.0.
This commit is contained in:
Jason Evans 2016-12-23 11:15:44 -08:00
parent bacb6afc6c
commit eab3b180e5

View File

@ -407,7 +407,7 @@ stats_arena_print(void (*write_cb)(void *, const char *), void *cbopaque,
CTL_M2_GET("stats.arenas.0.metadata", i, &metadata, size_t); CTL_M2_GET("stats.arenas.0.metadata", i, &metadata, size_t);
if (json) { if (json) {
malloc_cprintf(write_cb, cbopaque, malloc_cprintf(write_cb, cbopaque,
"\t\t\t\t\"metatata\": %zu%s\n", metadata, (bins || large) ? "\t\t\t\t\"metadata\": %zu%s\n", metadata, (bins || large) ?
"," : ""); "," : "");
} else { } else {
malloc_cprintf(write_cb, cbopaque, malloc_cprintf(write_cb, cbopaque,
@ -422,7 +422,7 @@ stats_arena_print(void (*write_cb)(void *, const char *), void *cbopaque,
static void static void
stats_general_print(void (*write_cb)(void *, const char *), void *cbopaque, stats_general_print(void (*write_cb)(void *, const char *), void *cbopaque,
bool json, bool merged, bool unmerged) bool json, bool more)
{ {
const char *cpv; const char *cpv;
bool bv; bool bv;
@ -717,11 +717,11 @@ stats_general_print(void (*write_cb)(void *, const char *), void *cbopaque,
"\t\t\t]\n"); "\t\t\t]\n");
malloc_cprintf(write_cb, cbopaque, malloc_cprintf(write_cb, cbopaque,
"\t\t},\n"); "\t\t}%s\n", (config_prof || more) ? "," : "");
} }
/* prof. */ /* prof. */
if (json) { if (config_prof && json) {
malloc_cprintf(write_cb, cbopaque, malloc_cprintf(write_cb, cbopaque,
"\t\t\"prof\": {\n"); "\t\t\"prof\": {\n");
@ -747,8 +747,7 @@ stats_general_print(void (*write_cb)(void *, const char *), void *cbopaque,
"\t\t\t\"lg_sample\": %zd\n", ssv); "\t\t\t\"lg_sample\": %zd\n", ssv);
malloc_cprintf(write_cb, cbopaque, malloc_cprintf(write_cb, cbopaque,
"\t\t}%s\n", (config_stats || merged || unmerged) ? "," : "\t\t}%s\n", more ? "," : "");
"");
} }
} }
@ -872,8 +871,8 @@ stats_print(void (*write_cb)(void *, const char *), void *cbopaque,
size_t u64sz; size_t u64sz;
bool json = false; bool json = false;
bool general = true; bool general = true;
bool merged = true; bool merged = config_stats;
bool unmerged = true; bool unmerged = config_stats;
bool bins = true; bool bins = true;
bool large = true; bool large = true;
@ -936,8 +935,10 @@ stats_print(void (*write_cb)(void *, const char *), void *cbopaque,
"___ Begin jemalloc statistics ___\n"); "___ Begin jemalloc statistics ___\n");
} }
if (general) if (general) {
stats_general_print(write_cb, cbopaque, json, merged, unmerged); bool more = (merged || unmerged);
stats_general_print(write_cb, cbopaque, json, more);
}
if (config_stats) { if (config_stats) {
stats_print_helper(write_cb, cbopaque, json, merged, unmerged, stats_print_helper(write_cb, cbopaque, json, merged, unmerged,
bins, large); bins, large);