From 89764adf8e7154fbe1b9bd82e26d7aa180d2a12f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Janouch?= Date: Sat, 24 Jun 2017 15:06:56 +0200 Subject: Improve redrawing performance --- hex.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/hex.c b/hex.c index a85a41b..cef9b64 100644 --- a/hex.c +++ b/hex.c @@ -542,6 +542,7 @@ app_make_row (struct row_buffer *buf, int64_t addr, int attrs) row_buffer_append (&ascii, " ", attrs); int64_t end_addr = g_ctx.data_offset + g_ctx.data_len; + const char *hexa = "0123456789abcdef"; for (int x = 0; x < ROW_SIZE; x++) { if (x % 8 == 0) row_buffer_append (buf, " ", attrs); @@ -568,9 +569,9 @@ app_make_row (struct row_buffer *buf, int64_t addr, int attrs) // TODO: leave it up to the user to decide what should be colored uint8_t cell = g_ctx.data[cell_addr - g_ctx.data_offset]; - char *hex = xstrdup_printf ("%02x", cell); - row_buffer_append (buf, hex, attrs | highlight); - free (hex); + row_buffer_append (buf, + (char[3]) { hexa[cell >> 4], hexa[cell & 7], 0 }, + attrs | highlight); char s[2] = { (cell >= 32 && cell < 127) ? cell : '.', 0 }; row_buffer_append (&ascii, s, attrs_mark | highlight); -- cgit v1.2.3