Fix off by one error in HEADER_InsertItemW.

diff --git a/dlls/comctl32/header.c b/dlls/comctl32/header.c
index 38a3b21..f034c06 100644
--- a/dlls/comctl32/header.c
+++ b/dlls/comctl32/header.c
@@ -958,19 +958,26 @@
 
         infoPtr->uNumItem++;
         infoPtr->items = COMCTL32_Alloc (sizeof (HEADER_ITEM) * infoPtr->uNumItem);
-        /* pre insert copy */
-        if (nItem > 0) {
-            memcpy (&infoPtr->items[0], &oldItems[0],
-                    nItem * sizeof(HEADER_ITEM));
+        if (nItem == 0) {
+            memcpy (&infoPtr->items[1], &oldItems[0],
+                    (infoPtr->uNumItem-1) * sizeof(HEADER_ITEM));
         }
+        else
+        {
+              /* pre insert copy */
+            if (nItem > 0) {
+                 memcpy (&infoPtr->items[0], &oldItems[0],
+                         nItem * sizeof(HEADER_ITEM));
+            }
 
-        /* post insert copy */
-        if (nItem < infoPtr->uNumItem - 1) {
-            memcpy (&infoPtr->items[nItem+1], &oldItems[nItem],
-                    (infoPtr->uNumItem - nItem) * sizeof(HEADER_ITEM));
+            /* post insert copy */
+            if (nItem < infoPtr->uNumItem - 1) {
+                memcpy (&infoPtr->items[nItem+1], &oldItems[nItem],
+                        (infoPtr->uNumItem - nItem - 1) * sizeof(HEADER_ITEM));
+            }
         }
-
-	COMCTL32_Free (oldItems);
+    
+        COMCTL32_Free (oldItems);
     }
 
     lpItem = (HEADER_ITEM*)&infoPtr->items[nItem];
@@ -998,6 +1005,10 @@
     if (lpItem->fmt == 0)
 	lpItem->fmt = HDF_LEFT;
 
+    if (!(lpItem->fmt &HDF_STRING) && (phdi->mask & HDI_TEXT))
+      {
+	lpItem->fmt |= HDF_STRING;
+      }
     if (phdi->mask & HDI_BITMAP)
         lpItem->hbm = phdi->hbm;