diff --git a/reactos/ntoskrnl/config/cmindex.c b/reactos/ntoskrnl/config/cmindex.c index e48977523b7..162263d7590 100644 --- a/reactos/ntoskrnl/config/cmindex.c +++ b/reactos/ntoskrnl/config/cmindex.c @@ -1344,6 +1344,8 @@ CmpSelectLeaf(IN PHHIVE Hive, *RootCell = &IndexKey->List[SubKeyIndex]; return LeafCell; } + + /* It didn't fit, so proceed to splitting */ } else { @@ -1380,22 +1382,22 @@ CmpSelectLeaf(IN PHHIVE Hive, /* Check if it's above */ if (Result >= 0) { - /* Get the first cell in the index */ - LeafCell = IndexKey->List[0]; + /* Get the cell in the index */ + LeafCell = IndexKey->List[SubKeyIndex]; LeafKey = (PCM_KEY_INDEX)HvGetCell(Hive, LeafCell); /* Return an error in case of problems */ if (!LeafKey) return HCELL_NIL; - /* Check if it fits into this leaf and break */ + /* Check if it fits into this leaf */ if (LeafKey->Count < CmpMaxIndexPerHblock) { /* Fill in the result and return the cell */ - *RootCell = &IndexKey->List[SubKeyIndex + 1]; + *RootCell = &IndexKey->List[SubKeyIndex]; return LeafCell; } - /* No, it doesn't fit, check the other leaf */ + /* No, it doesn't fit, check the next adjacent leaf */ if (SubKeyIndex < (IndexKey->Count - 1)) { /* Yes, there is space */ @@ -1413,6 +1415,8 @@ CmpSelectLeaf(IN PHHIVE Hive, return LeafCell; } } + + /* It didn't fit, so proceed to splitting */ } else { @@ -1429,11 +1433,8 @@ CmpSelectLeaf(IN PHHIVE Hive, /* Check if it fits and break */ if (LeafKey->Count < CmpMaxIndexPerHblock) { - /* Decrement the subkey index */ - SubKeyIndex--; - /* Fill in the result and return the cell */ - *RootCell = &IndexKey->List[SubKeyIndex]; + *RootCell = &IndexKey->List[SubKeyIndex - 1]; return LeafCell; } }