Fix the bug introduced by the commit 4d44165af04d40e8aad405a9fbe31d7304c654c8 that...
authorHiroshi Inoue <h-inoue@dream.email.ne.jp>
Thu, 7 Jul 2016 03:42:39 +0000 (12:42 +0900)
committerHiroshi Inoue <h-inoue@dream.email.ne.jp>
Thu, 7 Jul 2016 03:42:39 +0000 (12:42 +0900)
odbcapi30w.c

index bb05f19ec8100a3c234caf7b83b86f2ca8b0d8df..9126971bbef9af53159715b0833e63414f123ee9 100644 (file)
@@ -175,9 +175,9 @@ SQLGetDescFieldW(SQLHDESC hdesc, SQLSMALLINT iRecord, SQLSMALLINT iField,
        case SQL_DESC_TABLE_NAME:
        case SQL_DESC_TYPE_NAME:
            bMax = cbValueMax * 3 / WCLEN;
-           rgbVt = malloc(bMax + 1);
+           rgbV = malloc(bMax + 1);
            pcbV = &blen;
-           for (;; bMax = blen + 1, rgbVt = realloc(rgbV, bMax))
+           for (rgbVt = rgbV;; bMax = blen + 1, rgbVt = realloc(rgbV, bMax))
            {
                if (!rgbVt)
                {
@@ -306,9 +306,9 @@ SQLColAttributeW(SQLHSTMT   hstmt,
        case SQL_DESC_TYPE_NAME:
        case SQL_COLUMN_NAME:
            bMax = cbCharAttrMax * 3 / WCLEN;
-           rgbDt = malloc(bMax);
+           rgbD = malloc(bMax);
            rgbL = &blen;
-           for (;; bMax = blen + 1, rgbDt = realloc(rgbD, bMax))
+           for (rgbDt = rgbD;; bMax = blen + 1, rgbDt = realloc(rgbD, bMax))
            {
                if (!rgbDt)
                {
@@ -375,13 +375,16 @@ SQLGetDiagFieldW(SQLSMALLINT  fHandleType,
        case SQL_DIAG_SQLSTATE:
        case SQL_DIAG_SUBCLASS_ORIGIN:
            bMax = cbDiagInfoMax * 3 / WCLEN + 1;
-           if (rgbDt = malloc(bMax), !rgbD)
+           if (rgbD = malloc(bMax), !rgbD)
                return SQL_ERROR;
            rgbL = &blen;
-           for (;; bMax = blen + 1, rgbDt = realloc(rgbD, bMax))
+           for (rgbDt = rgbD;; bMax = blen + 1, rgbDt = realloc(rgbD, bMax))
            {
                if (!rgbDt)
+               {
+                   free(rgbD);
                    return SQL_ERROR;
+               }
                rgbD = rgbDt;
                ret = PGAPI_GetDiagField(fHandleType, handle, iRecord, fDiagField, rgbD,
                    bMax, rgbL);