]> granicus.if.org Git - libexpat/commitdiff
structdata.c: Address Clang Static Analyzer warnings (#294)
authorSebastian Pipping <sebastian@pipping.org>
Sat, 27 Jul 2019 23:05:24 +0000 (01:05 +0200)
committerSebastian Pipping <sebastian@pipping.org>
Sat, 27 Jul 2019 23:38:13 +0000 (01:38 +0200)
expat/tests/structdata.c

index 2ed36fc38de805e8f8e8b8e0846a3bfa01d2e4d8..86a5349ebcf4f4ac808dde7133488b5e4da4c5d5 100644 (file)
@@ -125,27 +125,32 @@ StructData_CheckItems(StructData *storage,
                 storage->count, count);
         StructData_Dispose(storage);
         fail(buffer);
-    }
-    for (i = 0; i < count; i++)
-    {
-        const StructDataEntry *got = &storage->entries[i];
-        const StructDataEntry *want = &expected[i];
-
-        if (xcstrcmp(got->str, want->str) != 0) {
-            StructData_Dispose(storage);
-            fail("structure got bad string");
-        }
-        if (got->data0 != want->data0 ||
-            got->data1 != want->data1 ||
-            got->data2 != want->data2) {
-            sprintf(buffer,
-                    "struct '%" XML_FMT_STR
-                    "' expected (%d,%d,%d), got (%d,%d,%d)",
-                    got->str,
-                    want->data0, want->data1, want->data2,
-                    got->data0, got->data1, got->data2);
-            StructData_Dispose(storage);
-            fail(buffer);
+    } else {
+        for (i = 0; i < count; i++)
+        {
+            const StructDataEntry *got = &storage->entries[i];
+            const StructDataEntry *want = &expected[i];
+
+            assert(got != NULL);
+            assert(want != NULL);
+
+            if (xcstrcmp(got->str, want->str) != 0) {
+                StructData_Dispose(storage);
+                fail("structure got bad string");
+            } else {
+                if (got->data0 != want->data0 ||
+                    got->data1 != want->data1 ||
+                    got->data2 != want->data2) {
+                    sprintf(buffer,
+                            "struct '%" XML_FMT_STR
+                            "' expected (%d,%d,%d), got (%d,%d,%d)",
+                            got->str,
+                            want->data0, want->data1, want->data2,
+                            got->data0, got->data1, got->data2);
+                    StructData_Dispose(storage);
+                    fail(buffer);
+                }
+            }
         }
     }
 }
@@ -159,4 +164,7 @@ StructData_Dispose(StructData *storage)
     for (i = 0; i < storage->count; i++)
         free((void *)storage->entries[i].str);
     free(storage->entries);
+
+    storage->count = 0;
+    storage->entries = NULL;
 }