diff --git a/src/memmap.c b/src/memmap.c
index 5b7eba5..49f129b 100644
--- a/src/memmap.c
+++ b/src/memmap.c
@@ -72,26 +72,20 @@
             continue;
         // Found position - check if an existing item needs to be split.
         if (start > e->start) {
-            e->size = start - e->start;
-            i++;
-            if (end < e_end)
-                // Need to split existing item
-                insert_e820(i, end, e_end - end, e->type);
             if (type == e->type) {
                 // Same type - merge them.
                 size += start - e->start;
                 start = e->start;
-                i--;
-                remove_e820(i);
+            } else {
+                // Split existing item.
+                e->size = start - e->start;
+                i++;
+                if (e_end > end)
+                    insert_e820(i, end, e_end - end, e->type);
             }
         }
         break;
     }
-    // Insert new item.
-    if (type != E820_HOLE) {
-        insert_e820(i, start, size, type);
-        i++;
-    }
     // Remove/adjust existing items that are overlapping.
     while (i<e820_count) {
         struct e820entry *e = &e820_list[i];
@@ -106,14 +100,17 @@
         }
         // Not completely overlapped - adjust its start.
         e->start = end;
-        e->size = e_end - e->start;
+        e->size = e_end - end;
         if (type == e->type) {
             // Same type - merge them.
-            (e-1)->size += e->size;
+            size += e->size;
             remove_e820(i);
         }
         break;
     }
+    // Insert new item.
+    if (type != E820_HOLE)
+        insert_e820(i, start, size, type);
     //dump_map();
 }
 
