cleanup overlay message centering
authorMischa POSLAWSKY <netris@shiar.org>
Sat, 10 Mar 2007 20:10:23 +0000 (21:10 +0100)
committerMischa POSLAWSKY <netris@shiar.org>
Sat, 10 Mar 2007 20:10:23 +0000 (21:10 +0100)
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

index 57bfee76b3ecb375ae17b332a6c4829d64885767..4d350fd6e2cf301ba197a9fe4df63b441413586b 100644 (file)
--- 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