Another portion of HeapReAlloc fixes.

diff --git a/dlls/setupapi/parser.c b/dlls/setupapi/parser.c
index f829245..9369f21 100644
--- a/dlls/setupapi/parser.c
+++ b/dlls/setupapi/parser.c
@@ -159,10 +159,17 @@
     void *new_array;
     unsigned int new_count = *count + *count / 2;
     if (new_count < 32) new_count = 32;
-    if ((new_array = HeapReAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, array, new_count * elem )))
+
+    if (array)
+	new_array = HeapReAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, array, new_count * elem );
+    else
+	new_array = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, new_count * elem );
+
+    if (new_array)
         *count = new_count;
     else
-        HeapFree( GetProcessHeap(), 0, array );
+	if (array)
+    	    HeapFree( GetProcessHeap(), 0, array );
     return new_array;
 }