From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35994) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bUfXk-0006hI-Ga for qemu-devel@nongnu.org; Tue, 02 Aug 2016 15:40:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bUfXf-0003Yu-EZ for qemu-devel@nongnu.org; Tue, 02 Aug 2016 15:39:59 -0400 Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]:33599) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bUfXf-0003Ye-7f for qemu-devel@nongnu.org; Tue, 02 Aug 2016 15:39:55 -0400 Received: by mail-wm0-x243.google.com with SMTP id o80so32557024wme.0 for ; Tue, 02 Aug 2016 12:39:55 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Tue, 2 Aug 2016 21:39:22 +0200 Message-Id: <1470166775-3671-13-git-send-email-pbonzini@redhat.com> In-Reply-To: <1470166775-3671-1-git-send-email-pbonzini@redhat.com> References: <1470166775-3671-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PULL 12/25] qdist: return "(empty)" instead of NULL when printing an empty dist List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: "Emilio G. Cota" From: "Emilio G. Cota" Printf'ing a NULL string is undefined behaviour. Avoid it. Reported-by: Peter Maydell Signed-off-by: Emilio G. Cota Message-Id: <1469459025-23606-4-git-send-email-cota@braap.org> Signed-off-by: Paolo Bonzini --- tests/test-qdist.c | 10 ++++++++-- util/qdist.c | 6 ++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/tests/test-qdist.c b/tests/test-qdist.c index 0298986..9541ce3 100644 --- a/tests/test-qdist.c +++ b/tests/test-qdist.c @@ -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); } diff --git a/util/qdist.c b/util/qdist.c index cc31140..41eff08 100644 --- a/util/qdist.c +++ b/util/qdist.c @@ -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_malloc(sizeof(*dist->entries)); @@ -234,7 +236,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); @@ -309,7 +311,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(""); -- 2.7.4