[ros-diffs] [hbirr] 19187: Fixed the growing of the dirty bitmap.
This will fix the registry update bugs,
if the binary hive is larger than 128kB.
hbirr at svn.reactos.com
hbirr at svn.reactos.com
Sun Nov 13 00:45:48 CET 2005
Fixed the growing of the dirty bitmap. This will fix the registry update
bugs, if the binary hive is larger than 128kB.
Modified: trunk/reactos/ntoskrnl/cm/regfile.c
_____
Modified: trunk/reactos/ntoskrnl/cm/regfile.c
--- trunk/reactos/ntoskrnl/cm/regfile.c 2005-11-12 21:11:09 UTC (rev
19186)
+++ trunk/reactos/ntoskrnl/cm/regfile.c 2005-11-12 23:45:32 UTC (rev
19187)
@@ -862,7 +862,7 @@
Filename);
if (!NT_SUCCESS(Status))
{
- DPRINT("RtlpCreateUnicodeString() failed (Status %lx)\n",
Status);
+ DPRINT("RtlCreateUnicodeString() failed (Status %lx)\n", Status);
return(Status);
}
@@ -3235,6 +3235,7 @@
PHBIN tmpBin;
ULONG BinSize;
ULONG i;
+ ULONG BitmapSize;
DPRINT ("CmiAddBin (BlockCount %lu)\n", BlockCount);
@@ -3287,17 +3288,17 @@
tmpBlock = (PCELL_HEADER)((ULONG_PTR) tmpBin + REG_HBIN_DATA_OFFSET);
tmpBlock->CellSize = (BinSize - REG_HBIN_DATA_OFFSET);
+ /* Calculate bitmap size in bytes (always a multiple of 32 bits) */
+ BitmapSize = ROUND_UP(RegistryHive->BlockListSize, sizeof(ULONG) * 8)
/ 8;
+
/* Grow bitmap if necessary */
- if (IsNoFileHive(RegistryHive) &&
- (RegistryHive->BlockListSize % (sizeof(ULONG) * 8) == 0))
+ if (!IsNoFileHive(RegistryHive) &&
+ BitmapSize > RegistryHive->DirtyBitMap.SizeOfBitMap)
{
PULONG BitmapBuffer;
- ULONG BitmapSize;
DPRINT("Grow hive bitmap\n");
- /* Calculate bitmap size in bytes (always a multiple of 32 bits)
*/
- BitmapSize = ROUND_UP(RegistryHive->BlockListSize, sizeof(ULONG)
* 8) / 8;
DPRINT("RegistryHive->BlockListSize: %lu\n",
RegistryHive->BlockListSize);
DPRINT("BitmapSize: %lu Bytes %lu Bits\n", BitmapSize,
BitmapSize * 8);
BitmapBuffer = (PULONG)ExAllocatePool(PagedPool,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-diffs/attachments/20051113/7c66363a/attachment.html
More information about the Ros-diffs
mailing list