]> git.eshelyaron.com Git - emacs.git/commitdiff
Pacify GCC 14 on recent read_char change
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 17 Aug 2024 18:09:17 +0000 (11:09 -0700)
committerEshel Yaron <me@eshelyaron.com>
Tue, 20 Aug 2024 14:11:02 +0000 (16:11 +0200)
* src/keyboard.c (read_char): Initialize c_volatile before
calling setjmp.  Although not necessary for correctness,
and not needed for gcc 14.2.1 20240801 (Red Hat 14.2.1-1)
on x86-64 when built with --enable-gcc-warnings,
some GCC 14 x86-64 configurations issue a false positive
without this change.
Problem reported by Andrea Corallo in:
https://lists.gnu.org/r/emacs-devel/2024-08/msg00620.html
and fix suggested by Pip Cet in:
https://lists.gnu.org/r/emacs-devel/2024-08/msg00627.html

(cherry picked from commit 4f1987cf77bc8e0f0180a665b3cab732021e25ab)

src/keyboard.c

index 6438e9cacb4dbfb842cc56eea187df5a3d707bcc..909c97774a454872be94827a50b7ca8bcd7bc3fa 100644 (file)
@@ -2752,7 +2752,7 @@ read_char (int commandflag, Lisp_Object map,
      it *must not* be in effect when we call redisplay.  */
 
   specpdl_ref jmpcount = SPECPDL_INDEX ();
-  Lisp_Object volatile c_volatile;
+  Lisp_Object volatile c_volatile = c;
   if (sys_setjmp (local_getcjmp))
     {
       c = c_volatile;
@@ -2800,7 +2800,6 @@ read_char (int commandflag, Lisp_Object map,
       goto non_reread;
     }
 
-  c_volatile = c;
 #if GCC_LINT && __GNUC__ && !__clang__
   /* This useless assignment pacifies GCC 14.2.1 x86-64
      <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=21161>.  */