Author: ekohl
Date: Tue Sep 7 15:21:06 2010
New Revision: 48722
URL:
http://svn.reactos.org/svn/reactos?rev=48722&view=rev
Log:
[USETUP]
Allocate a drive layout buffer that is large enough to keep a primary partition table (4
partition entries) plus 26 logical drives (2 partition entries each). Total 56 partition
entries. This should be enough for everybody until we support GPT partition tables. ;-)
See issue #5270 for more details.
Modified:
trunk/reactos/base/setup/usetup/partlist.c
Modified: trunk/reactos/base/setup/usetup/partlist.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/usetup/partlist…
==============================================================================
--- trunk/reactos/base/setup/usetup/partlist.c [iso-8859-1] (original)
+++ trunk/reactos/base/setup/usetup/partlist.c [iso-8859-1] Tue Sep 7 15:21:06 2010
@@ -701,6 +701,7 @@
ULONG i;
PLIST_ENTRY ListEntry;
PBIOSDISKENTRY BiosDiskEntry;
+ ULONG LayoutBufferSize;
Status = NtDeviceIoControlFile (FileHandle,
NULL,
@@ -870,9 +871,15 @@
InsertAscendingList(&List->DiskListHead, DiskEntry, DISKENTRY, ListEntry,
BiosDiskNumber);
+ /*
+ * Allocate a buffer for 26 logical drives (2 entries each == 52)
+ * plus the main partiton table (4 entries). Total 56 entries.
+ */
+ LayoutBufferSize = sizeof(DRIVE_LAYOUT_INFORMATION) +
+ ((56 - ANYSIZE_ARRAY) * sizeof(PARTITION_INFORMATION));
LayoutBuffer = (DRIVE_LAYOUT_INFORMATION*)RtlAllocateHeap (ProcessHeap,
0,
- 8192);
+ LayoutBufferSize);
if (LayoutBuffer == NULL)
{
return;
@@ -887,7 +894,7 @@
NULL,
0,
LayoutBuffer,
- 8192);
+ LayoutBufferSize);
if (NT_SUCCESS (Status))
{
if (LayoutBuffer->PartitionCount == 0)