From 6fc3fbd697e3192dcb95748770707453f0808131 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Thu, 2 Aug 2018 23:34:58 +0300 Subject: [PATCH] Fix debug assertion when a DCB is printed All DCBs don't have the server pointer set so it needs to be checked before calling any functions that take a server as a parameter. --- server/core/dcb.cc | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/server/core/dcb.cc b/server/core/dcb.cc index ee732b18d..11475af97 100644 --- a/server/core/dcb.cc +++ b/server/core/dcb.cc @@ -1382,11 +1382,13 @@ printDCB(DCB *dcb) { printf("\tQueued write data: %u\n", gwbuf_length(dcb->writeq)); } - char *statusname = server_status(dcb->server); - if (statusname) + if (dcb->server) { - printf("\tServer status: %s\n", statusname); - MXS_FREE(statusname); + if (char *statusname = server_status(dcb->server)) + { + printf("\tServer status: %s\n", statusname); + MXS_FREE(statusname); + } } char *rolename = dcb_role_name(dcb); if (rolename) @@ -1486,11 +1488,14 @@ dprintOneDCB(DCB *pdcb, DCB *dcb) dcb_printf(pdcb, "\tQueued write data: %d\n", gwbuf_length(dcb->writeq)); } - char *statusname = server_status(dcb->server); - if (statusname) + if (dcb->server) { - dcb_printf(pdcb, "\tServer status: %s\n", statusname); - MXS_FREE(statusname); + char *statusname = server_status(dcb->server); + if (statusname) + { + dcb_printf(pdcb, "\tServer status: %s\n", statusname); + MXS_FREE(statusname); + } } char *rolename = dcb_role_name(dcb); if (rolename) @@ -1637,11 +1642,14 @@ dprintDCB(DCB *pdcb, DCB *dcb) { dcb_printf(pdcb, "\tDelayed write data: %d\n", gwbuf_length(dcb->delayq)); } - char *statusname = server_status(dcb->server); - if (statusname) + if (dcb->server) { - dcb_printf(pdcb, "\tServer status: %s\n", statusname); - MXS_FREE(statusname); + char *statusname = server_status(dcb->server); + if (statusname) + { + dcb_printf(pdcb, "\tServer status: %s\n", statusname); + MXS_FREE(statusname); + } } char *rolename = dcb_role_name(dcb); if (rolename)