[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