Commit 11b7b07f authored by Emilio G. Cota's avatar Emilio G. Cota Committed by Paolo Bonzini
Browse files

qdist: return "(empty)" instead of NULL when printing an empty dist



Printf'ing a NULL string is undefined behaviour. Avoid it.

Reported-by: default avatarPeter Maydell <peter.maydell@linaro.org>
Signed-off-by: default avatarEmilio G. Cota <cota@braap.org>
Message-Id: <1469459025-23606-4-git-send-email-cota@braap.org>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 071d4054
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -360,10 +360,16 @@ static void test_none(void)
    g_assert(isnan(qdist_xmax(&dist)));

    pr = qdist_pr_plain(&dist, 0);
    g_assert(pr == NULL);
    g_assert_cmpstr(pr, ==, "(empty)");
    g_free(pr);

    pr = qdist_pr_plain(&dist, 2);
    g_assert(pr == NULL);
    g_assert_cmpstr(pr, ==, "(empty)");
    g_free(pr);

    pr = qdist_pr(&dist, 0, QDIST_PR_BORDER);
    g_assert_cmpstr(pr, ==, "(empty)");
    g_free(pr);

    qdist_destroy(&dist);
}
+4 −2
Original line number Diff line number Diff line
@@ -14,6 +14,8 @@
#define NAN (0.0 / 0.0)
#endif

#define QDIST_EMPTY_STR "(empty)"

void qdist_init(struct qdist *dist)
{
    dist->entries = g_new(struct qdist_entry, 1);
@@ -233,7 +235,7 @@ char *qdist_pr_plain(const struct qdist *dist, size_t n)
    char *ret;

    if (dist->n == 0) {
        return NULL;
        return g_strdup(QDIST_EMPTY_STR);
    }
    qdist_bin__internal(&binned, dist, n);
    ret = qdist_pr_internal(&binned);
@@ -308,7 +310,7 @@ char *qdist_pr(const struct qdist *dist, size_t n_bins, uint32_t opt)
    GString *s;

    if (dist->n == 0) {
        return NULL;
        return g_strdup(QDIST_EMPTY_STR);
    }

    s = g_string_new("");