Get rid of trailing semicolons in C macro definitions.
Writing a trailing semicolon in a macro is almost never the right thing, because you almost always want to write a semicolon after each macro call instead. (Even if there was some reason to prefer not to, pgindent would probably make a hash of code formatted that way; so within PG the rule should basically be "don't do it".) Thus, if we have a semi inside the macro, the compiler sees "something;;". Much of the time the extra empty statement is harmless, but it could lead to mysterious syntax errors at call sites. In perhaps an overabundance of neatnik-ism, let's run around and get rid of the excess semicolons whereever possible. The only thing worse than a mysterious syntax error is a mysterious syntax error that only happens in the back branches; therefore, backpatch these changes where relevant, which is most of them because most of these mistakes are old. (The lack of reported problems shows that this is largely a hypothetical issue, but still, it could bite us in some future patch.) John Naylor and Tom Lane Discussion: https://postgr.es/m/CACPNZCs0qWTqJ2QUSGJ07B7uvAvzMb-KbG2q+oo+J3tsWN5cqw@mail.gmail.com
This commit is contained in:
parent
5734785647
commit
a2098b6021
@ -344,12 +344,13 @@ gbt_ts_union(PG_FUNCTION_ARGS)
|
||||
}
|
||||
|
||||
|
||||
#define penalty_check_max_float(val) do { \
|
||||
#define penalty_check_max_float(val) \
|
||||
do { \
|
||||
if ( val > FLT_MAX ) \
|
||||
val = FLT_MAX; \
|
||||
if ( val < -FLT_MAX ) \
|
||||
val = -FLT_MAX; \
|
||||
} while(false);
|
||||
} while (0)
|
||||
|
||||
|
||||
Datum
|
||||
|
@ -74,7 +74,7 @@ typedef struct
|
||||
(*(result)) += (float) ( ((double)(tmp)) / ( (double)(tmp) + ( ((double)(oupper))*0.49F - ((double)(olower))*0.49F ) ) ); \
|
||||
(*(result)) *= (FLT_MAX / (((GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1)); \
|
||||
} \
|
||||
} while (0);
|
||||
} while (0)
|
||||
|
||||
|
||||
/*
|
||||
|
@ -48,7 +48,7 @@ typedef char trgm[3];
|
||||
*(((char*)(a))+0) = *(((char*)(b))+0); \
|
||||
*(((char*)(a))+1) = *(((char*)(b))+1); \
|
||||
*(((char*)(a))+2) = *(((char*)(b))+2); \
|
||||
} while(0);
|
||||
} while(0)
|
||||
|
||||
#ifdef KEEPONLYALNUM
|
||||
#define ISWORDCHR(c) (t_isalpha(c) || t_isdigit(c))
|
||||
|
@ -469,7 +469,7 @@ BF_swap(BF_word *x, int count)
|
||||
tmp3 ^= tmp2; \
|
||||
(R) ^= data.ctx.P[(N) + 1]; \
|
||||
tmp3 += tmp1; \
|
||||
(R) ^= tmp3;
|
||||
(R) ^= tmp3
|
||||
#else
|
||||
/* Architectures with no complicated addressing modes supported */
|
||||
#define BF_INDEX(S, i) \
|
||||
@ -490,7 +490,7 @@ BF_swap(BF_word *x, int count)
|
||||
tmp3 ^= tmp2; \
|
||||
(R) ^= data.ctx.P[(N) + 1]; \
|
||||
tmp3 += tmp1; \
|
||||
(R) ^= tmp3;
|
||||
(R) ^= tmp3
|
||||
#endif
|
||||
|
||||
/*
|
||||
@ -516,17 +516,18 @@ BF_swap(BF_word *x, int count)
|
||||
BF_ROUND(R, L, 15); \
|
||||
tmp4 = R; \
|
||||
R = L; \
|
||||
L = tmp4 ^ data.ctx.P[BF_N + 1];
|
||||
L = tmp4 ^ data.ctx.P[BF_N + 1]
|
||||
|
||||
#if BF_ASM
|
||||
|
||||
extern void _BF_body_r(BF_ctx *ctx);
|
||||
|
||||
#define BF_body() \
|
||||
_BF_body_r(&data.ctx);
|
||||
_BF_body_r(&data.ctx)
|
||||
#else
|
||||
|
||||
#define BF_body() \
|
||||
do { \
|
||||
L = R = 0; \
|
||||
ptr = data.ctx.P; \
|
||||
do { \
|
||||
@ -542,7 +543,8 @@ extern void _BF_body_r(BF_ctx *ctx);
|
||||
BF_ENCRYPT; \
|
||||
*(ptr - 2) = L; \
|
||||
*(ptr - 1) = R; \
|
||||
} while (ptr < &data.ctx.S[3][0xFF]);
|
||||
} while (ptr < &data.ctx.S[3][0xFF]); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
static void
|
||||
|
@ -143,22 +143,22 @@
|
||||
/* Read an attribute number array */
|
||||
#define READ_ATTRNUMBER_ARRAY(fldname, len) \
|
||||
token = pg_strtok(&length); /* skip :fldname */ \
|
||||
local_node->fldname = readAttrNumberCols(len);
|
||||
local_node->fldname = readAttrNumberCols(len)
|
||||
|
||||
/* Read an oid array */
|
||||
#define READ_OID_ARRAY(fldname, len) \
|
||||
token = pg_strtok(&length); /* skip :fldname */ \
|
||||
local_node->fldname = readOidCols(len);
|
||||
local_node->fldname = readOidCols(len)
|
||||
|
||||
/* Read an int array */
|
||||
#define READ_INT_ARRAY(fldname, len) \
|
||||
token = pg_strtok(&length); /* skip :fldname */ \
|
||||
local_node->fldname = readIntCols(len);
|
||||
local_node->fldname = readIntCols(len)
|
||||
|
||||
/* Read a bool array */
|
||||
#define READ_BOOL_ARRAY(fldname, len) \
|
||||
token = pg_strtok(&length); /* skip :fldname */ \
|
||||
local_node->fldname = readBoolCols(len);
|
||||
local_node->fldname = readBoolCols(len)
|
||||
|
||||
/* Routine exit */
|
||||
#define READ_DONE() \
|
||||
|
@ -3660,7 +3660,7 @@ do { \
|
||||
(path) = reparameterize_path_by_child(root, (path), child_rel); \
|
||||
if ((path) == NULL) \
|
||||
return NULL; \
|
||||
} while(0);
|
||||
} while(0)
|
||||
|
||||
#define REPARAMETERIZE_CHILD_PATH_LIST(pathlist) \
|
||||
do { \
|
||||
@ -3671,7 +3671,7 @@ do { \
|
||||
if ((pathlist) == NIL) \
|
||||
return NULL; \
|
||||
} \
|
||||
} while(0);
|
||||
} while(0)
|
||||
|
||||
Path *new_path;
|
||||
ParamPathInfo *new_ppi;
|
||||
|
@ -424,7 +424,7 @@ typedef struct
|
||||
(_X)->mode, (_X)->hh, (_X)->pm, (_X)->mi, (_X)->ss, (_X)->ssss, \
|
||||
(_X)->d, (_X)->dd, (_X)->ddd, (_X)->mm, (_X)->ms, (_X)->year, \
|
||||
(_X)->bc, (_X)->ww, (_X)->w, (_X)->cc, (_X)->j, (_X)->us, \
|
||||
(_X)->yysz, (_X)->clock);
|
||||
(_X)->yysz, (_X)->clock)
|
||||
#define DEBUG_TM(_X) \
|
||||
elog(DEBUG_elog_output, "TM:\nsec %d\nyear %d\nmin %d\nwday %d\nhour %d\nyday %d\nmday %d\nnisdst %d\nmon %d\n",\
|
||||
(_X)->tm_sec, (_X)->tm_year,\
|
||||
|
@ -125,7 +125,7 @@ swapfunc(SortTuple *a, SortTuple *b, size_t n)
|
||||
SortTuple t = *(a); \
|
||||
*(a) = *(b); \
|
||||
*(b) = t; \
|
||||
} while (0);
|
||||
} while (0)
|
||||
|
||||
#define vecswap(a, b, n) if ((n) > 0) swapfunc(a, b, n)
|
||||
|
||||
|
@ -99,7 +99,7 @@ typedef z_stream *z_streamp;
|
||||
#define K_VERS_MAJOR 1
|
||||
#define K_VERS_MINOR 13
|
||||
#define K_VERS_REV 0
|
||||
#define K_VERS_SELF MAKE_ARCHIVE_VERSION(K_VERS_MAJOR, K_VERS_MINOR, K_VERS_REV);
|
||||
#define K_VERS_SELF MAKE_ARCHIVE_VERSION(K_VERS_MAJOR, K_VERS_MINOR, K_VERS_REV)
|
||||
|
||||
/* Newest format we can read */
|
||||
#define K_VERS_MAX MAKE_ARCHIVE_VERSION(K_VERS_MAJOR, K_VERS_MINOR, 255)
|
||||
|
@ -158,7 +158,7 @@ typedef struct HashScanPosData
|
||||
(scanpos).firstItem = 0; \
|
||||
(scanpos).lastItem = 0; \
|
||||
(scanpos).itemIndex = 0; \
|
||||
} while (0);
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* HashScanOpaqueData is private state for a hash index scan.
|
||||
|
@ -421,7 +421,7 @@ typedef BTScanPosData *BTScanPos;
|
||||
(scanpos).buf = InvalidBuffer; \
|
||||
(scanpos).lsn = InvalidXLogRecPtr; \
|
||||
(scanpos).nextTupleOffset = 0; \
|
||||
} while (0);
|
||||
} while (0)
|
||||
|
||||
/* We need one of these for each equality-type SK_SEARCHARRAY scan key */
|
||||
typedef struct BTArrayKeyInfo
|
||||
|
@ -80,7 +80,7 @@ do { \
|
||||
} while (0)
|
||||
|
||||
#define SWAPINIT(a, es) swaptype = ((char *)(a) - (char *)0) % sizeof(long) || \
|
||||
(es) % sizeof(long) ? 2 : (es) == sizeof(long)? 0 : 1;
|
||||
(es) % sizeof(long) ? 2 : (es) == sizeof(long)? 0 : 1
|
||||
|
||||
static void
|
||||
swapfunc(char *a, char *b, size_t n, int swaptype)
|
||||
|
@ -80,7 +80,7 @@ do { \
|
||||
} while (0)
|
||||
|
||||
#define SWAPINIT(a, es) swaptype = ((char *)(a) - (char *)0) % sizeof(long) || \
|
||||
(es) % sizeof(long) ? 2 : (es) == sizeof(long)? 0 : 1;
|
||||
(es) % sizeof(long) ? 2 : (es) == sizeof(long)? 0 : 1
|
||||
|
||||
static void
|
||||
swapfunc(char *a, char *b, size_t n, int swaptype)
|
||||
|
Loading…
x
Reference in New Issue
Block a user