Remove item from the list, if we fail to initialize it at insert
time.

diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c
index 8af17de..70553a5 100644
--- a/dlls/comctl32/listview.c
+++ b/dlls/comctl32/listview.c
@@ -6619,7 +6619,11 @@
 			   hdpaSubItems );
     if (nItem == -1) goto fail;
    
-    if (!LISTVIEW_SetItemT(infoPtr, lpLVItem, isW)) goto fail;
+    if (!LISTVIEW_SetItemT(infoPtr, lpLVItem, isW))
+    {
+	DPA_DeletePtr(infoPtr->hdpaItems, nItem);
+	goto fail;
+    }
 
     /* if we're sorted, sort the list, and update the index */
     if (is_sorted)
@@ -6630,7 +6634,8 @@
 	{
 	    ERR("We can't find the item we just inserted, possible memory corruption.");
 	    /* we can't remove it from the list if we can't find it, so just fail */
-	    goto fail;
+	    /* we don't deallocate memory here, as it will probably cause more problems */
+	    return -1;
 	}
     }