ircd: irc_dictionary: fix up stats routines

This commit is contained in:
William Pitcock 2016-01-09 01:41:20 -06:00
parent 21d5a11cb8
commit d99ff0298c

View file

@ -796,9 +796,9 @@ stats_recurse(struct DictionaryElement *delem, int depth, int *pmaxdepth)
if (depth > *pmaxdepth) if (depth > *pmaxdepth)
*pmaxdepth = depth; *pmaxdepth = depth;
result = depth; result = depth;
if (delem->left) if (delem && delem->left)
result += stats_recurse(delem->left, depth + 1, pmaxdepth); result += stats_recurse(delem->left, depth + 1, pmaxdepth);
if (delem->right) if (delem && delem->right)
result += stats_recurse(delem->right, depth + 1, pmaxdepth); result += stats_recurse(delem->right, depth + 1, pmaxdepth);
return result; return result;
} }
@ -826,10 +826,17 @@ void irc_dictionary_stats(struct Dictionary *dict, void (*cb)(const char *line,
s_assert(dict != NULL); s_assert(dict != NULL);
cb(str, privdata); if (dict->count)
maxdepth = 0; {
sum = stats_recurse(dict->root, 0, &maxdepth); maxdepth = 0;
rb_snprintf(str, sizeof str, "%s: Objects: %d, Depth sum: %d, Avg depth: %d, Max depth: %d.", dict->id, dict->count, sum, sum / dict->count, maxdepth); sum = stats_recurse(dict->root, 0, &maxdepth);
rb_snprintf(str, sizeof str, "%s: Objects: %d, Depth sum: %d, Avg depth: %d, Max depth: %d.", dict->id, dict->count, sum, sum / dict->count, maxdepth);
}
else
{
rb_snprintf(str, sizeof str, "%s: Objects: 0, Depth sum: 0, Avg depth: 0, Max depth: 0.", dict->id);
}
cb(str, privdata); cb(str, privdata);
} }