From bf847a2163e3d2c60e4aa730b3508620c98b89f1 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Sat, 10 Mar 2007 21:10:23 +0100 Subject: [PATCH] cleanup overlay message centering Both code (intermediate vars for clarity, allocate the exact/right amount of memory) as well as the algorithm (justify left for odd fits). --- curses.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/curses.c b/curses.c index 57bfee7..4d350fd 100644 --- a/curses.c +++ b/curses.c @@ -536,11 +536,13 @@ void window_msg(int player, char *message) { //put a message over player's field if (!window[player].shown) return; if (message) { - char s[MAX_BOARD_WIDTH+1]; - memset(s, ' ', MAX_BOARD_WIDTH); - memcpy(&s[(window[player].size * Players[player].boardWidth / 2) - (strlen(message) / 2)], - message, strlen(message)); - s[window[player].size * Players[player].boardWidth] = 0; + const int fieldsize = Players[player].boardWidth * window[player].size; + const int centered = (fieldsize - strlen(message)) / 2; + char s[fieldsize + 1]; + + memset(s, ' ', fieldsize); + memcpy(&s[centered], message, strlen(message)); + s[fieldsize] = 0; #ifdef HAVE_NCURSES attrset(A_REVERSE); #else -- 2.30.0