From 92d8a600e9e9a1211312093a96c1e15ee9273886 Mon Sep 17 00:00:00 2001 From: Thomas Bernard Date: Mon, 3 Dec 2018 16:42:27 +0100 Subject: [PATCH] fix GFX2_LogHexDump() when runing with SDL2 --- src/gfx2log.c | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/gfx2log.c b/src/gfx2log.c index 50dd9a88..d8b64870 100644 --- a/src/gfx2log.c +++ b/src/gfx2log.c @@ -83,18 +83,34 @@ extern void GFX2_LogV(GFX2_Log_priority_T priority, const char * fmt, va_list ap extern void GFX2_LogHexDump(GFX2_Log_priority_T priority, const char * header, const byte * data, long offset, long count) { + char line[128]; long i; while (count > 0) { - GFX2_Log(priority, "%s%06X:", header, offset); + int p = 0, r; + r = snprintf(line + p, sizeof(line) - p, "%s%06lX:", header, offset); + if (r < 0) + return; + p += r; for (i = 0; i < count && i < 16; i++) - GFX2_Log(priority, " %02x", data[offset+i]); - while(i++ < 16) - GFX2_Log(priority, " "); - GFX2_Log(priority, " | "); + { + r = snprintf(line + p, sizeof(line) - p, " %02x", data[offset+i]); + if (r < 0) + return; + p += r; + } + if (i < 16) + { + memset(line + p, ' ', 3 * (16 - i)); + p += 3 * (16 - i); + } + line[p++] = ' '; + line[p++] = '|'; + line[p++] = ' '; for (i = 0; i < count && i < 16; i++) - GFX2_Log(priority, "%c", data[offset+i]>=32 && data[offset+i]<127 ? data[offset+i] : '.'); - GFX2_Log(priority, "\n"); + line[p++] = data[offset+i]>=32 && data[offset+i]<127 ? data[offset+i] : '.'; + line[p++] = '\0'; + GFX2_Log(priority, "%s\n", line); count -= i; offset += i; }