OSDN Git Service

Add more missing 'do { ... } while (0)' in missing macros. Without it,
authorBruce Momjian <bruce@momjian.us>
Thu, 25 Oct 2001 00:55:48 +0000 (00:55 +0000)
committerBruce Momjian <bruce@momjian.us>
Thu, 25 Oct 2001 00:55:48 +0000 (00:55 +0000)
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
contrib/pgcrypto/crypt-blowfish.c
contrib/pgcrypto/rijndael.c

index 6d32160..20db41c 100644 (file)
@@ -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)
 
index 1a9dba7..d60807f 100644 (file)
@@ -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)
 {
index 15a88aa..258202f 100644 (file)
@@ -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,