From b4a57b06486df001e9b4e4350c493e2c15e76380 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Thu, 25 Oct 2001 00:55:48 +0000
Subject: [PATCH] Add more missing 'do { ... } while (0)' in missing macros. 
 Without it, these macros fail in if/else cases:

#define X \
{ \
	... \
}


{

	if (...)
		X;
	else
		...
}

with proper setup:

#define X \
do { \
	... \
} while (0)

it works fine.
---
 contrib/pg_resetxlog/pg_resetxlog.c |  6 +++---
 contrib/pgcrypto/crypt-blowfish.c   |  4 ++--
 contrib/pgcrypto/rijndael.c         | 12 ++++++------
 3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/contrib/pg_resetxlog/pg_resetxlog.c b/contrib/pg_resetxlog/pg_resetxlog.c
index 6d32160905d..20db41ccf49 100644
--- a/contrib/pg_resetxlog/pg_resetxlog.c
+++ b/contrib/pg_resetxlog/pg_resetxlog.c
@@ -23,7 +23,7 @@
  * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/contrib/pg_resetxlog/Attic/pg_resetxlog.c,v 1.6 2001/07/19 02:12:34 tgl Exp $
+ * $Header: /cvsroot/pgsql/contrib/pg_resetxlog/Attic/pg_resetxlog.c,v 1.7 2001/10/25 00:55:48 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -273,7 +273,7 @@ static uint32 crc_tableV0[] = {
 #define INIT_CRC64V0(crc)	((crc).crc1 = 0xffffffff, (crc).crc2 = 0xffffffff)
 #define FIN_CRC64V0(crc)	((crc).crc1 ^= 0xffffffff, (crc).crc2 ^= 0xffffffff)
 #define COMP_CRC64V0(crc, data, len)	\
-{\
+do {\
 		uint32		 __c1 = (crc).crc1;\
 		uint32		 __c2 = (crc).crc2;\
 		char		*__data = (char *) (data);\
@@ -289,7 +289,7 @@ static uint32 crc_tableV0[] = {
 				__c1 = crc_tableV0[(__c1 ^ *__data++) & 0xff] ^ (__c1 >> 8);\
 		(crc).crc1 = __c1;\
 		(crc).crc2 = __c2;\
-}
+} while (0)
 
 #define EQ_CRC64V0(c1,c2)  ((c1).crc1 == (c2).crc1 && (c1).crc2 == (c2).crc2)
 
diff --git a/contrib/pgcrypto/crypt-blowfish.c b/contrib/pgcrypto/crypt-blowfish.c
index 1a9dba7dff5..d60807f2417 100644
--- a/contrib/pgcrypto/crypt-blowfish.c
+++ b/contrib/pgcrypto/crypt-blowfish.c
@@ -359,13 +359,13 @@ static unsigned char BF_atoi64[0x60] = {
 };
 
 #define BF_safe_atoi64(dst, src) \
-{ \
+do { \
 	tmp = (unsigned char)(src); \
 	if ((unsigned int)(tmp -= 0x20) >= 0x60) return -1; \
 	tmp = BF_atoi64[tmp]; \
 	if (tmp > 63) return -1; \
 	(dst) = tmp; \
-}
+} while (0)
 
 static int BF_decode(BF_word *dst, const char *src, int size)
 {
diff --git a/contrib/pgcrypto/rijndael.c b/contrib/pgcrypto/rijndael.c
index 15a88aaf3bd..258202fa991 100644
--- a/contrib/pgcrypto/rijndael.c
+++ b/contrib/pgcrypto/rijndael.c
@@ -255,25 +255,25 @@ gen_tabs(void)
 /* initialise the key schedule from the user supplied key   */
 
 #define loop4(i)                                    \
-{   t = ls_box(rotr(t,  8)) ^ rco_tab[i];           \
+do {   t = ls_box(rotr(t,  8)) ^ rco_tab[i];           \
     t ^= e_key[4 * i];     e_key[4 * i + 4] = t;    \
     t ^= e_key[4 * i + 1]; e_key[4 * i + 5] = t;    \
     t ^= e_key[4 * i + 2]; e_key[4 * i + 6] = t;    \
     t ^= e_key[4 * i + 3]; e_key[4 * i + 7] = t;    \
-}
+} while (0)
 
 #define loop6(i)                                    \
-{   t = ls_box(rotr(t,  8)) ^ rco_tab[i];           \
+do {   t = ls_box(rotr(t,  8)) ^ rco_tab[i];           \
     t ^= e_key[6 * i];     e_key[6 * i + 6] = t;    \
     t ^= e_key[6 * i + 1]; e_key[6 * i + 7] = t;    \
     t ^= e_key[6 * i + 2]; e_key[6 * i + 8] = t;    \
     t ^= e_key[6 * i + 3]; e_key[6 * i + 9] = t;    \
     t ^= e_key[6 * i + 4]; e_key[6 * i + 10] = t;   \
     t ^= e_key[6 * i + 5]; e_key[6 * i + 11] = t;   \
-}
+} while (0)
 
 #define loop8(i)                                    \
-{   t = ls_box(rotr(t,  8)) ^ rco_tab[i];           \
+do {   t = ls_box(rotr(t,  8)) ^ rco_tab[i];           \
     t ^= e_key[8 * i];     e_key[8 * i + 8] = t;    \
     t ^= e_key[8 * i + 1]; e_key[8 * i + 9] = t;    \
     t ^= e_key[8 * i + 2]; e_key[8 * i + 10] = t;   \
@@ -283,7 +283,7 @@ gen_tabs(void)
     t ^= e_key[8 * i + 5]; e_key[8 * i + 13] = t;   \
     t ^= e_key[8 * i + 6]; e_key[8 * i + 14] = t;   \
     t ^= e_key[8 * i + 7]; e_key[8 * i + 15] = t;   \
-}
+} while (0)
 
 rijndael_ctx *
 rijndael_set_key(rijndael_ctx *ctx, const u4byte *in_key, const u4byte key_len,
-- 
GitLab