From: Bruce Momjian Date: Thu, 25 Oct 2001 00:50:50 +0000 (+0000) Subject: Add missing "do { ... } while(0)" in ODBC macros and add find_baddefs X-Git-Tag: REL7_2_BETA1~7 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=309a04f5b8e77f82b6ce703ff15fcb89368b067c;p=postgresql Add missing "do { ... } while(0)" in ODBC macros and add find_baddefs script. --- diff --git a/src/interfaces/odbc/convert.c b/src/interfaces/odbc/convert.c index 3e7d24169c..6210d030bf 100644 --- a/src/interfaces/odbc/convert.c +++ b/src/interfaces/odbc/convert.c @@ -796,7 +796,7 @@ static int enlarge_statement(StatementClass *stmt, unsigned int newsize) *---------- */ #define CVT_INIT(size) \ -{ \ +do { \ if (stmt->stmt_with_params) \ free(stmt->stmt_with_params); \ if (stmt->stmt_size_limit > 0) \ @@ -811,7 +811,8 @@ static int enlarge_statement(StatementClass *stmt, unsigned int newsize) stmt->stmt_with_params = new_statement; \ npos = 0; \ new_statement[0] = '\0'; \ -} +} while (0) + /*---------- * Terminate the stmt_with_params string with NULL. *---------- @@ -823,55 +824,59 @@ static int enlarge_statement(StatementClass *stmt, unsigned int newsize) *---------- */ #define CVT_APPEND_DATA(s, len) \ -{ \ +do { \ unsigned int newpos = npos + len; \ ENLARGE_NEWSTATEMENT(newpos) \ memcpy(&new_statement[npos], s, len); \ npos = newpos; \ new_statement[npos] = '\0'; \ -} +} while (0) + /*---------- * Append a string. *---------- */ #define CVT_APPEND_STR(s) \ -{ \ +do { \ unsigned int len = strlen(s); \ CVT_APPEND_DATA(s, len); \ -} +} while (0) + /*---------- * Append a char. *---------- */ #define CVT_APPEND_CHAR(c) \ -{ \ +do { \ ENLARGE_NEWSTATEMENT(npos + 1); \ new_statement[npos++] = c; \ -} +} while (0) + /*---------- * Append a binary data. * Newly reqeuired size may be overestimated currently. *---------- */ #define CVT_APPEND_BINARY(buf, used) \ -{ \ +do { \ unsigned int newlimit = npos + 5 * used; \ ENLARGE_NEWSTATEMENT(newlimit); \ npos += convert_to_pgbinary(buf, &new_statement[npos], used); \ -} +} while (0) + /*---------- * *---------- */ #define CVT_SPECIAL_CHARS(buf, used) \ -{ \ +do { \ int cnvlen = convert_special_chars(buf, NULL, used); \ unsigned int newlimit = npos + cnvlen; \ \ ENLARGE_NEWSTATEMENT(newlimit); \ convert_special_chars(buf, &new_statement[npos], used); \ npos += cnvlen; \ -} +} while (0) /*---------- * Check if the statement is diff --git a/src/tools/find_baddefs b/src/tools/find_baddefs new file mode 100755 index 0000000000..07f6fa2c61 --- /dev/null +++ b/src/tools/find_baddefs @@ -0,0 +1,19 @@ +#!/bin/sh +# This script attempts to find bad ifdef's, i.e. ifdef's that use braces +# but not the do { ... } while (0) syntax +# +# This is useful for running before pgindent + +for FILE +do + awk ' BEGIN {was_define = "N"} + { if (was_define == "Y" && + $0 ~ /^{/) + printf "%s %d\n", FILENAME, NR + if ($0 ~ /^#define/) + was_define = "Y" + else + was_define = "N" + }' $FILE +done +