Browse Source

* Editor fixes by Wayne Sherman.

git-svn-id: trunk@3315 -
daniel 19 years ago
parent
commit
8661f302c1
2 changed files with 11 additions and 4 deletions
  1. 2 1
      fv/editors.pas
  2. 9 3
      fv/memory.pas

+ 2 - 1
fv/editors.pas

@@ -2946,7 +2946,8 @@ end; { TEditor.SetBufLen }
 
 
 function TEditor.SetBufSize (NewSize : Sw_Word) : Boolean;
 function TEditor.SetBufSize (NewSize : Sw_Word) : Boolean;
 begin
 begin
-  SetBufSize := NewSize <= BufSize;
+//  SetBufSize := NewSize <= BufSize;
+  SetBufSize := SetBufferSize(Buffer, NewSize);
 end; { TEditor.SetBufSize }
 end; { TEditor.SetBufSize }
 
 
 
 

+ 9 - 3
fv/memory.pas

@@ -145,7 +145,7 @@ FUNCTION GetBufferSize (P: Pointer): Word;
 Change the size of buffer given by pointer P to the size requested.
 Change the size of buffer given by pointer P to the size requested.
 01Oct99 LdB
 01Oct99 LdB
 ---------------------------------------------------------------------}
 ---------------------------------------------------------------------}
-FUNCTION SetBufferSize (P: Pointer; Size: Word): Boolean;
+FUNCTION SetBufferSize (var P: Pointer; Size: Word): Boolean;
 
 
 {-DisposeBuffer------------------------------------------------------
 {-DisposeBuffer------------------------------------------------------
 Dispose of buffer given by pointer P.
 Dispose of buffer given by pointer P.
@@ -753,7 +753,7 @@ END;
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
 {  SetBufferSize -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 01Oct99 LdB     }
 {  SetBufferSize -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 01Oct99 LdB     }
 {---------------------------------------------------------------------------}
 {---------------------------------------------------------------------------}
-FUNCTION SetBufferSize (P: Pointer; Size: Word): Boolean;
+FUNCTION SetBufferSize (var P: Pointer; Size: Word): Boolean;
 VAR NewSize: Word;
 VAR NewSize: Word;
 BEGIN
 BEGIN
    SetBufferSize := False;                            { Preset failure }
    SetBufferSize := False;                            { Preset failure }
@@ -767,7 +767,13 @@ BEGIN
      SetBufferSize := True;                           { Return success }
      SetBufferSize := True;                           { Return success }
    End;
    End;
    {$ELSE}                                            { DPMI/WIN/NT/OS2 CODE }
    {$ELSE}                                            { DPMI/WIN/NT/OS2 CODE }
-   SetBufferSize := False;                            { No block resizing }
+ {$ifdef fpc}
+   Dec(Pointer(P),SizeOf(TBuffer));                 { Correct to buffer }
+   SetBufferSize := ReAllocMem(P, Size + SizeOf(TBuffer)) <> nil;
+   if SetBufferSize then
+      TBuffer(P^).Size := Size + SizeOf(TBuffer);
+   Inc(Pointer(P), SizeOf(TBuffer));                 { Correct to buffer }
+{$endif fpc}
    {$ENDIF}
    {$ENDIF}
 END;
 END;