]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix type-checking bug in vertical-motion
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 16 Apr 2020 16:22:42 +0000 (09:22 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 16 Apr 2020 16:24:48 +0000 (09:24 -0700)
* src/indent.c (Fvertical_motion): Fix bug where the type of lcols
was checked too late.

src/indent.c

index dd81b983d48650917e5b8d08ed4aa7a2928c21f0..06f11a251e6b0c6c28dad4b4f2c7a355db88fef1 100644 (file)
@@ -2091,19 +2091,17 @@ whether or not it is currently displayed in some window.  */)
   struct it it;
   struct text_pos pt;
   struct window *w;
-  Lisp_Object lcols;
+  Lisp_Object lcols = Qnil;
   void *itdata = NULL;
   ptrdiff_t count = SPECPDL_INDEX ();
 
   /* Allow LINES to be of the form (HPOS . VPOS) aka (COLUMNS . LINES).  */
-  bool lcols_given = CONSP (lines);
-  if (lcols_given)
+  if (CONSP (lines))
     {
       lcols = XCAR (lines);
+      CHECK_NUMBER (lcols);
       lines = XCDR (lines);
     }
-  else
-    lcols = make_fixnum (0);   /* shut up stupid GCC warning */
 
   CHECK_FIXNUM (lines);
   w = decode_live_window (window);
@@ -2281,9 +2279,9 @@ whether or not it is currently displayed in some window.  */)
 
          overshoot_handled = 1;
        }
-      if (lcols_given)
+      if (!NILP (lcols))
        to_x =
-         window_column_x (w, window, extract_float (lcols), lcols)
+         window_column_x (w, window, XFLOATINT (lcols), lcols)
          + lnum_pixel_width;
       if (nlines <= 0)
        {
@@ -2334,7 +2332,7 @@ whether or not it is currently displayed in some window.  */)
       /* Move to the goal column, if one was specified.  If the window
         was originally hscrolled, the goal column is interpreted as
         an addition to the hscroll amount.  */
-      if (lcols_given)
+      if (!NILP (lcols))
        {
          move_it_in_display_line (&it, ZV, first_x + to_x, MOVE_TO_X);
          /* If we find ourselves in the middle of an overlay string