You've already forked CEF4Delphi
mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2025-06-12 22:07:39 +02:00
Fixed an access violation in TChromium.ShowDevTools with some Delphi versions
This commit is contained in:
@ -98,6 +98,11 @@ type
|
||||
implementation
|
||||
|
||||
uses
|
||||
{$IFDEF DELPHI16_UP}
|
||||
System.Math,
|
||||
{$ELSE}
|
||||
Math,
|
||||
{$ENDIF}
|
||||
uCEFMiscFunctions, uCEFLibFunctions;
|
||||
|
||||
|
||||
@ -246,18 +251,21 @@ end;
|
||||
function TCefBytesWriteHandler.Write(const ptr: Pointer; size, n: NativeUInt): NativeUInt;
|
||||
var
|
||||
TempPointer : pointer;
|
||||
TempSize : int64;
|
||||
begin
|
||||
EnterCriticalSection(FCriticalSection);
|
||||
|
||||
if ((FOffset + (size * n)) >= FBufferSize) and (Grow(size * n) = 0) then
|
||||
TempSize := size * n;
|
||||
|
||||
if ((FOffset + TempSize) >= FBufferSize) and (Grow(TempSize) = 0) then
|
||||
Result := 0
|
||||
else
|
||||
begin
|
||||
TempPointer := Pointer(cardinal(FBuffer) + FOffset);
|
||||
|
||||
CopyMemory(TempPointer, ptr, size * n);
|
||||
CopyMemory(TempPointer, ptr, TempSize);
|
||||
|
||||
FOffset := FOffset + (size * n);
|
||||
FOffset := FOffset + TempSize;
|
||||
Result := n;
|
||||
end;
|
||||
|
||||
@ -337,21 +345,21 @@ end;
|
||||
|
||||
function TCefBytesWriteHandler.Grow(size : NativeUInt) : NativeUInt;
|
||||
var
|
||||
s : NativeUInt;
|
||||
TempTotal : int64;
|
||||
begin
|
||||
EnterCriticalSection(FCriticalSection);
|
||||
try
|
||||
EnterCriticalSection(FCriticalSection);
|
||||
|
||||
if (size > FGrow) then
|
||||
s := size
|
||||
else
|
||||
s := FGrow;
|
||||
TempTotal := max(size, FGrow);
|
||||
inc(TempTotal, FBufferSize);
|
||||
|
||||
ReallocMem(FBuffer, FBufferSize + s);
|
||||
ReallocMem(FBuffer, TempTotal);
|
||||
|
||||
FBufferSize := FBufferSize + s;
|
||||
Result := FBufferSize;
|
||||
|
||||
LeaveCriticalSection(FCriticalSection);
|
||||
FBufferSize := TempTotal;
|
||||
Result := FBufferSize;
|
||||
finally
|
||||
LeaveCriticalSection(FCriticalSection);
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
Reference in New Issue
Block a user