mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
FIX: Terminal - crash
This commit is contained in:
parent
d2b2920c29
commit
ad8ee310b7
1 changed files with 24 additions and 16 deletions
|
|
@ -514,19 +514,23 @@ var
|
|||
DstAddr: Pointer;
|
||||
SrcAddr: Pointer;
|
||||
BytesToMove: Integer;
|
||||
Top, Bottom, Height: Integer;
|
||||
Top, Bottom: Integer;
|
||||
begin
|
||||
Top:= FScrollRange.Top;
|
||||
Bottom:= FScrollRange.Bottom;
|
||||
Height:= FScrollRange.Height + 1;
|
||||
if Count > Height then Count:= Height;
|
||||
|
||||
DstAddr := (FBuffer + (Row - 1) * FColumns * SizeOf(TComTermChar));
|
||||
SrcAddr := (FBuffer + (Row + Count - 1) * FColumns * SizeOf(TComTermChar));
|
||||
BytesToMove := (Bottom - Top - Count + 1) * FColumns * SizeOf(TComTermChar);
|
||||
if (Row < Top) or (Row > Bottom) then Exit;
|
||||
if (Row - 1) + Count > Bottom then Count:= Bottom - Row + 1;
|
||||
|
||||
// scroll in buffer
|
||||
Move(SrcAddr^, DstAddr^, BytesToMove);
|
||||
if Row < Bottom then
|
||||
begin
|
||||
DstAddr := (FBuffer + (Row - 1) * FColumns * SizeOf(TComTermChar));
|
||||
SrcAddr := (FBuffer + (Row + Count - 1) * FColumns * SizeOf(TComTermChar));
|
||||
BytesToMove := (Bottom - Row - Count + 1) * FColumns * SizeOf(TComTermChar);
|
||||
|
||||
// scroll in buffer
|
||||
Move(SrcAddr^, DstAddr^, BytesToMove);
|
||||
end;
|
||||
|
||||
B:= PComTermChar(FBuffer) + ((Bottom - Count) * FColumns);
|
||||
for Index:= 0 to Count * FColumns - 1 do
|
||||
|
|
@ -550,19 +554,23 @@ var
|
|||
DstAddr: Pointer;
|
||||
SrcAddr: Pointer;
|
||||
BytesToMove: Integer;
|
||||
Top, Bottom, Height: Integer;
|
||||
Top, Bottom: Integer;
|
||||
begin
|
||||
Top:= FScrollRange.Top;
|
||||
Bottom:= FScrollRange.Bottom;
|
||||
Height:= FScrollRange.Height + 1;
|
||||
if Count > Height then Count:= Height;
|
||||
|
||||
SrcAddr := (FBuffer + (Row - 1) * FColumns * SizeOf(TComTermChar));
|
||||
DstAddr := (FBuffer + (Row + Count - 1) * FColumns * SizeOf(TComTermChar));
|
||||
BytesToMove := (Bottom - Top - Count + 1) * FColumns * SizeOf(TComTermChar);
|
||||
if (Row < Top) or (Row > Bottom) then Exit;
|
||||
if (Row - 1) + Count > Bottom then Count:= Bottom - Row + 1;
|
||||
|
||||
// scroll in buffer
|
||||
Move(SrcAddr^, DstAddr^, BytesToMove);
|
||||
if Row < Bottom then
|
||||
begin
|
||||
SrcAddr := (FBuffer + (Row - 1) * FColumns * SizeOf(TComTermChar));
|
||||
DstAddr := (FBuffer + (Row + Count - 1) * FColumns * SizeOf(TComTermChar));
|
||||
BytesToMove := (Bottom - Row - Count + 1) * FColumns * SizeOf(TComTermChar);
|
||||
|
||||
// scroll in buffer
|
||||
Move(SrcAddr^, DstAddr^, BytesToMove);
|
||||
end;
|
||||
|
||||
B:= PComTermChar(FBuffer) + ((Row - 1) * FColumns);
|
||||
for Index:= 0 to Count * FColumns - 1 do
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue