From: Karl Heuer Date: Tue, 17 Jan 1995 02:29:16 +0000 (+0000) Subject: (message_dolog): Ignore narrowing. X-Git-Tag: emacs-19.34~5416 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d917be71a8466e98f2c3dd55670fd540c727638e;p=emacs.git (message_dolog): Ignore narrowing. Use low-level functions, to bypass modification and motion hooks. --- diff --git a/src/xdisp.c b/src/xdisp.c index bb34e27e456..91ffad37d63 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -212,7 +212,9 @@ int line_number_display_limit; t means infinite. nil means don't log at all. */ Lisp_Object Vmessage_log_max; -/* Add a string to the message log, optionally terminated with a newline. */ +/* Add a string to the message log, optionally terminated with a newline. + This function calls low-level routines in order to bypass text property + hooks, etc. which might not be safe to run. */ void message_dolog (m, len, nlflag) @@ -229,6 +231,8 @@ message_dolog (m, len, nlflag) oldpoint = PT; oldbegv = BEGV; oldzv = ZV; + BEGV = BEG; + ZV = Z; if (oldpoint == Z) oldpoint += len + nlflag; if (oldzv == Z) @@ -240,13 +244,12 @@ message_dolog (m, len, nlflag) insert_1 ("\n", 1, 1, 0); if (NATNUMP (Vmessage_log_max)) { - Lisp_Object n; - XSETINT (n, -XFASTINT (Vmessage_log_max)); - Fforward_line (n); - oldpoint -= min (PT, oldpoint) - BEG; - oldbegv -= min (PT, oldbegv) - BEG; - oldzv -= min (PT, oldzv) - BEG; - del_range (BEG, PT); + int pos = scan_buffer ('\n', PT, 0, + -XFASTINT (Vmessage_log_max) - 1, 0, 1); + oldpoint -= min (pos, oldpoint) - BEG; + oldbegv -= min (pos, oldbegv) - BEG; + oldzv -= min (pos, oldzv) - BEG; + del_range_1 (BEG, pos, 0); } BEGV = oldbegv; ZV = oldzv;