Author: aandrejevic
Date: Wed Jul 29 02:03:48 2015
New Revision: 68581

URL: http://svn.reactos.org/svn/reactos?rev=68581&view=rev
Log:
[NTVDM]
- Combine free blocks after resizing.
- Fix the LastParagraph value in the PSP.


Modified:
    trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/memory.c
    trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.c

Modified: trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/memory.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/memory.c?rev=68581&r1=68580&r2=68581&view=diff
==============================================================================
--- trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/memory.c  [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/memory.c  [iso-8859-1] 
Wed Jul 29 02:03:48 2015
@@ -292,7 +292,8 @@
                 NewSize);
 
         /* Just split the block */
-        NextMcb = SEGMENT_TO_MCB(Segment + NewSize + 1);
+        NextSegment = Segment + NewSize + 1;
+        NextMcb = SEGMENT_TO_MCB(NextSegment);
         NextMcb->BlockType = Mcb->BlockType;
         NextMcb->Size = Mcb->Size - NewSize - 1;
         NextMcb->OwnerPsp = 0;
@@ -300,6 +301,9 @@
         /* Update the MCB */
         Mcb->BlockType = 'M';
         Mcb->Size = NewSize;
+
+        /* Combine this free block with adjoining free blocks */
+        DosCombineFreeBlocks(NextSegment);
     }
 
 Done:

Modified: trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.c?rev=68581&r1=68580&r2=68581&view=diff
==============================================================================
--- trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.c [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.c [iso-8859-1] 
Wed Jul 29 02:03:48 2015
@@ -198,7 +198,7 @@
     PspBlock->Exit[1] = 0x20;
 
     /* Set the number of the last paragraph */
-    PspBlock->LastParagraph = Segment + ProgramSize - 1;
+    PspBlock->LastParagraph = Segment + ProgramSize;
 
     /* Save the interrupt vectors */
     PspBlock->TerminateAddress = IntVecTable[0x22];


Reply via email to