From: Markus Armbruster Date: Tue, 8 Jun 2010 04:28:25 +0000 (+0200) Subject: Oops when mpr() is misused for printing partial lines X-Git-Tag: v4.3.27~222 X-Git-Url: http://git.pond.sub.org/?p=empserver;a=commitdiff_plain;h=2f4b5973cedaeecc33537560a4da09da610f9d56 Oops when mpr() is misused for printing partial lines Such misuse creates a bulletin with a partial line. The read command normally merges it with the next one, but if the bulletins are more than five seconds apart (clock jumped somehow), we get a bulletin header in the middle of a line. --- diff --git a/src/lib/subs/pr.c b/src/lib/subs/pr.c index 5548c9d8b..e707b1c94 100644 --- a/src/lib/subs/pr.c +++ b/src/lib/subs/pr.c @@ -500,8 +500,9 @@ pr_beep(void) } /* - * Print to country CN similar to printf(). - * Use printf-style FORMAT with the optional arguments. + * Print complete lines to country CN similar to printf(). + * Use printf-style FORMAT with the optional arguments. FORMAT must + * end with '\n'. * If CN is zero, don't print anything. * Else, if CN is the current player and we're not in the update, * print just like pr(). Else print into a bulletin. @@ -514,6 +515,7 @@ mpr(int cn, char *format, ...) char buf[4096]; va_list ap; + CANT_HAPPEN(!format[0] || format[strlen(format) - 1] != '\n'); if (!cn) return; va_start(ap, format);