]> granicus.if.org Git - vim/commitdiff
patch 8.0.1688: some macros are used without a semicolon v8.0.1688
authorBram Moolenaar <Bram@vim.org>
Tue, 10 Apr 2018 16:47:20 +0000 (18:47 +0200)
committerBram Moolenaar <Bram@vim.org>
Tue, 10 Apr 2018 16:47:20 +0000 (18:47 +0200)
Problem:    Some macros are used without a semicolon, causing auto-indent to be
            wrong.
Solution:   Use the do-while(0) trick. (Ozaki Kiichi, closes #2729)

12 files changed:
src/buffer.c
src/dosinst.c
src/ex_cmds.c
src/gui_at_sb.c
src/macros.h
src/main.c
src/memline.c
src/option.c
src/os_vms.c
src/screen.c
src/version.c
src/window.c

index 0e13e1f5d4384ff4595fc87cd98568a94a3ffb10..4563736b4d958c962ae2411bcd52839a9f01cc66 100644 (file)
@@ -1764,7 +1764,7 @@ enter_buffer(buf_T *buf)
 #endif
 
     /* Change directories when the 'acd' option is set. */
-    DO_AUTOCHDIR
+    DO_AUTOCHDIR;
 
 #ifdef FEAT_KEYMAP
     if (curbuf->b_kmap_state & KEYMAP_INIT)
index 6a12e3dc886f0daabc68c5e313587b21fa6c038b..ae5517da949a15e39f29e49bc7c7ff23aea8af55 100644 (file)
 #define GVIMEXT32_PATH     "GvimExt32\\gvimext.dll"
 
 /* Macro to do an error check I was typing over and over */
-#define CHECK_REG_ERROR(code) if (code != ERROR_SUCCESS) { printf("%ld error number:  %ld\n", (long)__LINE__, (long)code); return 1; }
+#define CHECK_REG_ERROR(code) \
+    do { \
+       if (code != ERROR_SUCCESS) \
+       { \
+           printf("%ld error number:  %ld\n", (long)__LINE__, (long)code); \
+           return 1; \
+       } \
+    } while (0)
 
 int    has_vim = 0;            /* installable vim.exe exists */
 int    has_gvim = 0;           /* installable gvim.exe exists */
index e13d34cc0fbcd5208ffe9b8d76036249a4e8973f..111fe01d22a32be2ef77d5f0acb7b1872af888b0 100644 (file)
@@ -2996,7 +2996,7 @@ rename_buffer(char_u *new_fname)
     apply_autocmds(EVENT_BUFFILEPOST, NULL, NULL, FALSE, curbuf);
 
     /* Change directories when the 'acd' option is set. */
-    DO_AUTOCHDIR
+    DO_AUTOCHDIR;
     return OK;
 }
 
@@ -3254,7 +3254,7 @@ do_write(exarg_T *eap)
         * got changed or set. */
        if (eap->cmdidx == CMD_saveas || name_was_missing)
        {
-           DO_AUTOCHDIR
+           DO_AUTOCHDIR;
        }
     }
 
@@ -4147,7 +4147,7 @@ do_ecmd(
 #endif
 
        /* Change directories when the 'acd' option is set. */
-       DO_AUTOCHDIR
+       DO_AUTOCHDIR;
 
        /*
         * Careful: open_buffer() and apply_autocmds() may change the current
index 659e93463ca751709e4b4892a2e913a3e4b88e85..1816daa09e9be70b977edfee395e8823ff6f7552 100644 (file)
@@ -645,7 +645,11 @@ Redisplay(Widget w, XEvent *event, Region region)
     static Boolean
 CompareEvents(XEvent *oldEvent, XEvent *newEvent)
 {
-#define Check(field) if (newEvent->field != oldEvent->field) return False;
+#define Check(field) \
+    do { \
+       if (newEvent->field != oldEvent->field) \
+           return False; \
+    } while (0)
 
     Check(xany.display);
     Check(xany.type);
index f5440b17e051cb221eb07868fac5f33381c526c8..fcd1a829da76b83f9df7b733ea95b2746805c328 100644 (file)
 #endif
 
 #ifdef STARTUPTIME
-# define TIME_MSG(s) { if (time_fd != NULL) time_msg(s, NULL); }
+# define TIME_MSG(s) do { if (time_fd != NULL) time_msg(s, NULL); } while (0)
 #else
-# define TIME_MSG(s)
+# define TIME_MSG(s) do { /**/ } while (0)
 #endif
 
 #ifdef FEAT_VREPLACE
 #endif
 
 #ifdef FEAT_AUTOCHDIR
-# define DO_AUTOCHDIR if (p_acd) do_autochdir();
+# define DO_AUTOCHDIR do { if (p_acd) do_autochdir(); } while (0)
 #else
-# define DO_AUTOCHDIR
+# define DO_AUTOCHDIR do { /**/ } while (0)
 #endif
 
 #define RESET_BINDING(wp)  (wp)->w_p_scb = FALSE; (wp)->w_p_crb = FALSE
index 0b0fac60beebd083f66be0e82d4517dc77d14c6b..6d351b6ff3b1d7736f8fe49c88a32d30291adb05 100644 (file)
@@ -824,7 +824,7 @@ vim_main2(void)
     no_wait_return = FALSE;
 
     /* 'autochdir' has been postponed */
-    DO_AUTOCHDIR
+    DO_AUTOCHDIR;
 
 #ifdef FEAT_TERMRESPONSE
     /* Requesting the termresponse is postponed until here, so that a "-c q"
index 5ecb32c107c6c187ba0337b0cdc181e66d2ae648..4be1036f057514211df5b339f83f49767a0fa56e 100644 (file)
@@ -8,8 +8,8 @@
  */
 
 /* for debugging */
-/* #define CHECK(c, s) if (c) EMSG(s) */
-#define CHECK(c, s)
+/* #define CHECK(c, s) do { if (c) EMSG(s); } while (0) */
+#define CHECK(c, s)    do { /**/ } while (0)
 
 /*
  * memline.c: Contains the functions for appending, deleting and changing the
index 084e5e1a63064094144e5a59a119f5dccc43facd..48432bb3228f910d7882c7cad59c2f5c29e329ff 100644 (file)
@@ -8456,7 +8456,7 @@ set_bool_option(
     else if ((int *)varp == &p_acd)
     {
        /* Change directories when the 'acd' option is set now. */
-       DO_AUTOCHDIR
+       DO_AUTOCHDIR;
     }
 #endif
 
index 02c594c5bd5d6a8e6bfc11c385d5b7b36ae4cdc4..84f84ac710aa1ea56f2b9dfbd3ad1c6b98d74793 100644 (file)
@@ -83,7 +83,7 @@ static void   set_tty(int row, int col);
 #define EXPL_ALLOC_INC 64
 
 #define EQN(S1,S2,LN) (strncmp(S1,S2,LN) == 0)
-#define SKIP_FOLLOWING_SLASHES(Str) while (Str[1] == '/') ++Str
+#define SKIP_FOLLOWING_SLASHES(Str) do { while (Str[1] == '/') ++Str; } while (0)
 
 
 /*
index 77a3c1895fb4883a407285b06489450d7aa8bc7d..bcfaabed191e4a1bf6083f9c28da2b71a7dda316 100644 (file)
@@ -2705,15 +2705,21 @@ fold_line(
     }
 
 #ifdef FEAT_RIGHTLEFT
-# define RL_MEMSET(p, v, l)  if (wp->w_p_rl) \
-                               for (ri = 0; ri < l; ++ri) \
-                                  ScreenAttrs[off + (wp->w_width - (p) - (l)) + ri] = v; \
-                            else \
-                               for (ri = 0; ri < l; ++ri) \
-                                  ScreenAttrs[off + (p) + ri] = v
+# define RL_MEMSET(p, v, l) \
+    do { \
+       if (wp->w_p_rl) \
+           for (ri = 0; ri < l; ++ri) \
+              ScreenAttrs[off + (wp->w_width - (p) - (l)) + ri] = v; \
+        else \
+           for (ri = 0; ri < l; ++ri) \
+              ScreenAttrs[off + (p) + ri] = v; \
+    } while (0)
 #else
-# define RL_MEMSET(p, v, l)   for (ri = 0; ri < l; ++ri) \
-                                ScreenAttrs[off + (p) + ri] = v
+# define RL_MEMSET(p, v, l) \
+    do { \
+       for (ri = 0; ri < l; ++ri) \
+           ScreenAttrs[off + (p) + ri] = v; \
+    } while (0)
 #endif
 
     /* Set all attributes of the 'number' or 'relativenumber' column and the
index 4fc5de02255989243bb01a91d36d6a613f1252db..63c274fa6c96c7fe6f2df76d27f8bfaf61bf2fb5 100644 (file)
@@ -762,6 +762,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1688,
 /**/
     1687,
 /**/
index 337f84dee12b807696783b1bb3cc7978d094694b..a1b2a45cc08a73754412755d6c55072d20a05a41 100644 (file)
@@ -99,9 +99,16 @@ do_window(
        Prenum1 = Prenum;
 
 #ifdef FEAT_CMDWIN
-# define CHECK_CMDWIN if (cmdwin_type != 0) { EMSG(_(e_cmdwin)); break; }
+# define CHECK_CMDWIN \
+    do { \
+       if (cmdwin_type != 0) \
+       { \
+           EMSG(_(e_cmdwin)); \
+           return; \
+       } \
+    } while (0)
 #else
-# define CHECK_CMDWIN
+# define CHECK_CMDWIN do { /**/ } while (0)
 #endif
 
     switch (nchar)
@@ -110,7 +117,7 @@ do_window(
     case 'S':
     case Ctrl_S:
     case 's':
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
                reset_VIsual_and_resel();       /* stop Visual mode */
 #ifdef FEAT_QUICKFIX
                /* When splitting the quickfix window open a new buffer in it,
@@ -127,7 +134,7 @@ do_window(
 /* split current window in two parts, vertically */
     case Ctrl_V:
     case 'v':
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
                reset_VIsual_and_resel();       /* stop Visual mode */
 #ifdef FEAT_QUICKFIX
                /* When splitting the quickfix window open a new buffer in it,
@@ -144,7 +151,7 @@ do_window(
 /* split current window and edit alternate file */
     case Ctrl_HAT:
     case '^':
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
                reset_VIsual_and_resel();       /* stop Visual mode */
                cmd_with_count("split #", cbuf, sizeof(cbuf), Prenum);
                do_cmdline_cmd(cbuf);
@@ -153,7 +160,7 @@ do_window(
 /* open new window */
     case Ctrl_N:
     case 'n':
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
                reset_VIsual_and_resel();       /* stop Visual mode */
 #ifdef FEAT_QUICKFIX
 newwindow:
@@ -191,7 +198,7 @@ newwindow:
 /* close preview window */
     case Ctrl_Z:
     case 'z':
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
                reset_VIsual_and_resel();       /* stop Visual mode */
                do_cmdline_cmd((char_u *)"pclose");
                break;
@@ -211,7 +218,7 @@ newwindow:
 /* close all but current window */
     case Ctrl_O:
     case 'o':
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
                reset_VIsual_and_resel();       /* stop Visual mode */
                cmd_with_count("only", cbuf, sizeof(cbuf), Prenum);
                do_cmdline_cmd(cbuf);
@@ -222,7 +229,7 @@ newwindow:
     case 'w':
 /* cursor to previous window with wrap around */
     case 'W':
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
                if (ONE_WINDOW && Prenum != 1)  /* just one window */
                    beep_flush();
                else
@@ -260,7 +267,7 @@ newwindow:
     case 'j':
     case K_DOWN:
     case Ctrl_J:
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
                win_goto_ver(FALSE, Prenum1);
                break;
 
@@ -268,7 +275,7 @@ newwindow:
     case 'k':
     case K_UP:
     case Ctrl_K:
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
                win_goto_ver(TRUE, Prenum1);
                break;
 
@@ -277,7 +284,7 @@ newwindow:
     case K_LEFT:
     case Ctrl_H:
     case K_BS:
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
                win_goto_hor(TRUE, Prenum1);
                break;
 
@@ -285,7 +292,7 @@ newwindow:
     case 'l':
     case K_RIGHT:
     case Ctrl_L:
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
                win_goto_hor(FALSE, Prenum1);
                break;
 
@@ -338,21 +345,21 @@ newwindow:
 /* exchange current and next window */
     case 'x':
     case Ctrl_X:
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
                win_exchange(Prenum);
                break;
 
 /* rotate windows downwards */
     case Ctrl_R:
     case 'r':
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
                reset_VIsual_and_resel();       /* stop Visual mode */
                win_rotate(FALSE, (int)Prenum1);    /* downwards */
                break;
 
 /* rotate windows upwards */
     case 'R':
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
                reset_VIsual_and_resel();       /* stop Visual mode */
                win_rotate(TRUE, (int)Prenum1);     /* upwards */
                break;
@@ -362,7 +369,7 @@ newwindow:
     case 'J':
     case 'H':
     case 'L':
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
                win_totop((int)Prenum,
                        ((nchar == 'H' || nchar == 'L') ? WSP_VERT : 0)
                        | ((nchar == 'H' || nchar == 'K') ? WSP_TOP : WSP_BOT));
@@ -428,7 +435,7 @@ newwindow:
 /* jump to tag and split window if tag exists (in preview window) */
 #if defined(FEAT_QUICKFIX)
     case '}':
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
                if (Prenum)
                    g_do_tagpreview = Prenum;
                else
@@ -437,7 +444,7 @@ newwindow:
                /* FALLTHROUGH */
     case ']':
     case Ctrl_RSB:
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
                /* keep Visual mode, can select words to use as a tag */
                if (Prenum)
                    postponed_split = Prenum;
@@ -459,7 +466,7 @@ newwindow:
     case 'F':
     case Ctrl_F:
 wingotofile:
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
 
                ptr = grab_file_name(Prenum1, &lnum);
                if (ptr != NULL)
@@ -503,7 +510,7 @@ wingotofile:
                /* FALLTHROUGH */
     case 'd':                      /* Go to definition, using 'define' */
     case Ctrl_D:
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
                if ((len = find_ident_under_cursor(&ptr, FIND_IDENT)) == 0)
                    break;
                find_pattern_in_path(ptr, 0, len, TRUE,
@@ -534,7 +541,7 @@ wingotofile:
 /* CTRL-W g  extended commands */
     case 'g':
     case Ctrl_G:
-               CHECK_CMDWIN
+               CHECK_CMDWIN;
 #ifdef USE_ON_FLY_SCROLL
                dont_scroll = TRUE;             /* disallow scrolling here */
 #endif
@@ -4273,9 +4280,9 @@ win_enter_ext(
     win_T      *wp,
     int                undo_sync,
     int                curwin_invalid,
-    int                trigger_new_autocmds UNUSED,
-    int                trigger_enter_autocmds UNUSED,
-    int                trigger_leave_autocmds UNUSED)
+    int                trigger_new_autocmds,
+    int                trigger_enter_autocmds,
+    int                trigger_leave_autocmds)
 {
     int                other_buffer = FALSE;
 
@@ -4385,7 +4392,7 @@ win_enter_ext(
 #endif
 
     /* Change directories when the 'acd' option is set. */
-    DO_AUTOCHDIR
+    DO_AUTOCHDIR;
 }