@@ -796,7 +796,7 @@ static int enlarge_statement(StatementClass *stmt, unsigned int newsize)
796796 *----------
797797 */
798798#define CVT_INIT (size ) \
799- { \
799+ do { \
800800if (stmt->stmt_with_params) \
801801free(stmt->stmt_with_params); \
802802if (stmt->stmt_size_limit > 0) \
@@ -811,7 +811,8 @@ static int enlarge_statement(StatementClass *stmt, unsigned int newsize)
811811stmt->stmt_with_params = new_statement; \
812812npos = 0; \
813813new_statement[0] = '\0'; \
814- }
814+ } while (0)
815+
815816/*----------
816817 *Terminate the stmt_with_params string with NULL.
817818 *----------
@@ -823,55 +824,59 @@ static int enlarge_statement(StatementClass *stmt, unsigned int newsize)
823824 *----------
824825 */
825826#define CVT_APPEND_DATA (s ,len ) \
826- { \
827+ do { \
827828unsigned intnewpos = npos + len; \
828829ENLARGE_NEWSTATEMENT(newpos) \
829830memcpy(&new_statement[npos], s, len); \
830831npos = newpos; \
831832new_statement[npos] = '\0'; \
832- }
833+ } while (0)
834+
833835/*----------
834836 *Append a string.
835837 *----------
836838 */
837839#define CVT_APPEND_STR (s ) \
838- { \
840+ do { \
839841unsigned int len = strlen(s); \
840842CVT_APPEND_DATA(s, len); \
841- }
843+ } while (0)
844+
842845/*----------
843846 *Append a char.
844847 *----------
845848 */
846849#define CVT_APPEND_CHAR (c ) \
847- { \
850+ do { \
848851ENLARGE_NEWSTATEMENT(npos + 1); \
849852new_statement[npos++] = c; \
850- }
853+ } while (0)
854+
851855/*----------
852856 *Append a binary data.
853857 *Newly reqeuired size may be overestimated currently.
854858 *----------
855859 */
856860#define CVT_APPEND_BINARY (buf ,used ) \
857- { \
861+ do { \
858862unsigned intnewlimit = npos + 5 * used; \
859863ENLARGE_NEWSTATEMENT(newlimit); \
860864npos += convert_to_pgbinary(buf, &new_statement[npos], used); \
861- }
865+ } while (0)
866+
862867/*----------
863868 *
864869 *----------
865870 */
866871#define CVT_SPECIAL_CHARS (buf ,used ) \
867- { \
872+ do { \
868873intcnvlen = convert_special_chars(buf, NULL, used); \
869874unsigned intnewlimit = npos + cnvlen; \
870875\
871876ENLARGE_NEWSTATEMENT(newlimit); \
872877convert_special_chars(buf, &new_statement[npos], used); \
873878npos += cnvlen; \
874- }
879+ } while (0)
875880
876881/*----------
877882 *Check if the statement is