Skip to content

Commit 6f47002

Browse files
committed
patch 8.0.1688: some macros are used without a semicolon
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)
1 parent d6b4f2d commit 6f47002

12 files changed

Lines changed: 75 additions & 49 deletions

File tree

src/buffer.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1764,7 +1764,7 @@ enter_buffer(buf_T *buf)
17641764
#endif
17651765

17661766
/* Change directories when the 'acd' option is set. */
1767-
DO_AUTOCHDIR
1767+
DO_AUTOCHDIR;
17681768

17691769
#ifdef FEAT_KEYMAP
17701770
if (curbuf->b_kmap_state & KEYMAP_INIT)

src/dosinst.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,14 @@
2323
#define GVIMEXT32_PATH "GvimExt32\\gvimext.dll"
2424

2525
/* Macro to do an error check I was typing over and over */
26-
#define CHECK_REG_ERROR(code) if (code != ERROR_SUCCESS) { printf("%ld error number: %ld\n", (long)__LINE__, (long)code); return 1; }
26+
#define CHECK_REG_ERROR(code) \
27+
do { \
28+
if (code != ERROR_SUCCESS) \
29+
{ \
30+
printf("%ld error number: %ld\n", (long)__LINE__, (long)code); \
31+
return 1; \
32+
} \
33+
} while (0)
2734

2835
int has_vim = 0; /* installable vim.exe exists */
2936
int has_gvim = 0; /* installable gvim.exe exists */

src/ex_cmds.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2996,7 +2996,7 @@ rename_buffer(char_u *new_fname)
29962996
apply_autocmds(EVENT_BUFFILEPOST, NULL, NULL, FALSE, curbuf);
29972997

29982998
/* Change directories when the 'acd' option is set. */
2999-
DO_AUTOCHDIR
2999+
DO_AUTOCHDIR;
30003000
return OK;
30013001
}
30023002

@@ -3254,7 +3254,7 @@ do_write(exarg_T *eap)
32543254
* got changed or set. */
32553255
if (eap->cmdidx == CMD_saveas || name_was_missing)
32563256
{
3257-
DO_AUTOCHDIR
3257+
DO_AUTOCHDIR;
32583258
}
32593259
}
32603260

@@ -4147,7 +4147,7 @@ do_ecmd(
41474147
#endif
41484148

41494149
/* Change directories when the 'acd' option is set. */
4150-
DO_AUTOCHDIR
4150+
DO_AUTOCHDIR;
41514151

41524152
/*
41534153
* Careful: open_buffer() and apply_autocmds() may change the current

src/gui_at_sb.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,11 @@ Redisplay(Widget w, XEvent *event, Region region)
645645
static Boolean
646646
CompareEvents(XEvent *oldEvent, XEvent *newEvent)
647647
{
648-
#define Check(field) if (newEvent->field != oldEvent->field) return False;
648+
#define Check(field) \
649+
do { \
650+
if (newEvent->field != oldEvent->field) \
651+
return False; \
652+
} while (0)
649653

650654
Check(xany.display);
651655
Check(xany.type);

src/macros.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,9 @@
230230
#endif
231231

232232
#ifdef STARTUPTIME
233-
# define TIME_MSG(s) { if (time_fd != NULL) time_msg(s, NULL); }
233+
# define TIME_MSG(s) do { if (time_fd != NULL) time_msg(s, NULL); } while (0)
234234
#else
235-
# define TIME_MSG(s)
235+
# define TIME_MSG(s) do { /**/ } while (0)
236236
#endif
237237

238238
#ifdef FEAT_VREPLACE
@@ -289,9 +289,9 @@
289289
#endif
290290

291291
#ifdef FEAT_AUTOCHDIR
292-
# define DO_AUTOCHDIR if (p_acd) do_autochdir();
292+
# define DO_AUTOCHDIR do { if (p_acd) do_autochdir(); } while (0)
293293
#else
294-
# define DO_AUTOCHDIR
294+
# define DO_AUTOCHDIR do { /**/ } while (0)
295295
#endif
296296

297297
#define RESET_BINDING(wp) (wp)->w_p_scb = FALSE; (wp)->w_p_crb = FALSE

src/main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -824,7 +824,7 @@ vim_main2(void)
824824
no_wait_return = FALSE;
825825

826826
/* 'autochdir' has been postponed */
827-
DO_AUTOCHDIR
827+
DO_AUTOCHDIR;
828828

829829
#ifdef FEAT_TERMRESPONSE
830830
/* Requesting the termresponse is postponed until here, so that a "-c q"

src/memline.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
*/
99

1010
/* for debugging */
11-
/* #define CHECK(c, s) if (c) EMSG(s) */
12-
#define CHECK(c, s)
11+
/* #define CHECK(c, s) do { if (c) EMSG(s); } while (0) */
12+
#define CHECK(c, s) do { /**/ } while (0)
1313

1414
/*
1515
* memline.c: Contains the functions for appending, deleting and changing the

src/option.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8456,7 +8456,7 @@ set_bool_option(
84568456
else if ((int *)varp == &p_acd)
84578457
{
84588458
/* Change directories when the 'acd' option is set now. */
8459-
DO_AUTOCHDIR
8459+
DO_AUTOCHDIR;
84608460
}
84618461
#endif
84628462

src/os_vms.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ static void set_tty(int row, int col);
8383
#define EXPL_ALLOC_INC 64
8484

8585
#define EQN(S1,S2,LN) (strncmp(S1,S2,LN) == 0)
86-
#define SKIP_FOLLOWING_SLASHES(Str) while (Str[1] == '/') ++Str
86+
#define SKIP_FOLLOWING_SLASHES(Str) do { while (Str[1] == '/') ++Str; } while (0)
8787

8888

8989
/*

src/screen.c

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2705,15 +2705,21 @@ fold_line(
27052705
}
27062706

27072707
#ifdef FEAT_RIGHTLEFT
2708-
# define RL_MEMSET(p, v, l) if (wp->w_p_rl) \
2709-
for (ri = 0; ri < l; ++ri) \
2710-
ScreenAttrs[off + (wp->w_width - (p) - (l)) + ri] = v; \
2711-
else \
2712-
for (ri = 0; ri < l; ++ri) \
2713-
ScreenAttrs[off + (p) + ri] = v
2708+
# define RL_MEMSET(p, v, l) \
2709+
do { \
2710+
if (wp->w_p_rl) \
2711+
for (ri = 0; ri < l; ++ri) \
2712+
ScreenAttrs[off + (wp->w_width - (p) - (l)) + ri] = v; \
2713+
else \
2714+
for (ri = 0; ri < l; ++ri) \
2715+
ScreenAttrs[off + (p) + ri] = v; \
2716+
} while (0)
27142717
#else
2715-
# define RL_MEMSET(p, v, l) for (ri = 0; ri < l; ++ri) \
2716-
ScreenAttrs[off + (p) + ri] = v
2718+
# define RL_MEMSET(p, v, l) \
2719+
do { \
2720+
for (ri = 0; ri < l; ++ri) \
2721+
ScreenAttrs[off + (p) + ri] = v; \
2722+
} while (0)
27172723
#endif
27182724

27192725
/* Set all attributes of the 'number' or 'relativenumber' column and the

0 commit comments

Comments
 (0)