mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2025-06-02 21:57:37 +02:00
Fixed #190: Lazarus : access violation creating a TCefBinaryValueRef in 64 bits
Access violation was because of a memory overwrite. TStream.Read doesn't have a TBytes overload in FPC, so the stack was overwritten instead of the array's content.
This commit is contained in:
parent
b9e22bd870
commit
f33417ca73
@ -367,8 +367,9 @@ begin
|
|||||||
|
|
||||||
try
|
try
|
||||||
try
|
try
|
||||||
TempOpenDialog := TOpenDialog.Create(nil);
|
TempOpenDialog := TOpenDialog.Create(nil);
|
||||||
TempOpenDialog.Filter := 'JPEG files (*.jpg)|*.JPG';
|
TempOpenDialog.Options := TempOpenDialog.Options + [ofFileMustExist];
|
||||||
|
TempOpenDialog.Filter := 'JPEG files (*.jpg)|*.JPG';
|
||||||
|
|
||||||
if TempOpenDialog.Execute then
|
if TempOpenDialog.Execute then
|
||||||
begin
|
begin
|
||||||
@ -378,7 +379,7 @@ begin
|
|||||||
if (TempSize > 0) then
|
if (TempSize > 0) then
|
||||||
begin
|
begin
|
||||||
SetLength(TempBuffer, TempSize);
|
SetLength(TempBuffer, TempSize);
|
||||||
TempSize := TempStream.Read(TempBuffer, TempSize);
|
TempSize := TempStream.Read(TempBuffer[0], TempSize);
|
||||||
|
|
||||||
if (TempSize > 0) then
|
if (TempSize > 0) then
|
||||||
begin
|
begin
|
||||||
|
@ -208,7 +208,7 @@ begin
|
|||||||
model.AddItem(MINIBROWSER_CONTEXTMENU_EVALJSCODE, 'Evaluate JavaScript code...');
|
model.AddItem(MINIBROWSER_CONTEXTMENU_EVALJSCODE, 'Evaluate JavaScript code...');
|
||||||
model.AddItem(MINIBROWSER_CONTEXTMENU_GETSCROLLPOS, 'Get vertical scroll position...');
|
model.AddItem(MINIBROWSER_CONTEXTMENU_GETSCROLLPOS, 'Get vertical scroll position...');
|
||||||
// TODO: Fix bug in creating a TCefBinaryValueRef
|
// TODO: Fix bug in creating a TCefBinaryValueRef
|
||||||
//model.AddItem(MINIBROWSER_CONTEXTMENU_JSBINPARAM, 'Send JPEG image...');
|
model.AddItem(MINIBROWSER_CONTEXTMENU_JSBINPARAM, 'Send JPEG image...');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TJSEvalFrm.Chromium1BeforePopup(Sender: TObject;
|
procedure TJSEvalFrm.Chromium1BeforePopup(Sender: TObject;
|
||||||
@ -367,8 +367,9 @@ begin
|
|||||||
|
|
||||||
try
|
try
|
||||||
try
|
try
|
||||||
TempOpenDialog := TOpenDialog.Create(nil);
|
TempOpenDialog := TOpenDialog.Create(nil);
|
||||||
TempOpenDialog.Filter := 'JPEG files (*.jpg)|*.JPG';
|
TempOpenDialog.Options := TempOpenDialog.Options + [ofFileMustExist];
|
||||||
|
TempOpenDialog.Filter := 'JPEG files (*.jpg)|*.JPG';
|
||||||
|
|
||||||
if TempOpenDialog.Execute then
|
if TempOpenDialog.Execute then
|
||||||
begin
|
begin
|
||||||
@ -378,7 +379,7 @@ begin
|
|||||||
if (TempSize > 0) then
|
if (TempSize > 0) then
|
||||||
begin
|
begin
|
||||||
SetLength(TempBuffer, TempSize);
|
SetLength(TempBuffer, TempSize);
|
||||||
TempSize := TempStream.Read(TempBuffer, TempSize);
|
TempSize := TempStream.Read(TempBuffer[0], TempSize);
|
||||||
|
|
||||||
if (TempSize > 0) then
|
if (TempSize > 0) then
|
||||||
begin
|
begin
|
||||||
@ -453,7 +454,7 @@ var
|
|||||||
TempPointer : pointer;
|
TempPointer : pointer;
|
||||||
TempSize : NativeUInt;
|
TempSize : NativeUInt;
|
||||||
TempString : string;
|
TempString : string;
|
||||||
TempDecodedStream : TMemoryStream;
|
TempDecodedStream : TBytesStream;
|
||||||
TempEncodedStream : TStringStream;
|
TempEncodedStream : TStringStream;
|
||||||
TempEncoder : TBase64EncodingStream;
|
TempEncoder : TBase64EncodingStream;
|
||||||
begin
|
begin
|
||||||
@ -475,9 +476,7 @@ begin
|
|||||||
|
|
||||||
if (TempSize > 0) then
|
if (TempSize > 0) then
|
||||||
begin
|
begin
|
||||||
TempDecodedStream := TMemoryStream.Create();
|
TempDecodedStream := TBytesStream.Create(TempBuffer);
|
||||||
TempDecodedStream.write(TempPointer, TempSize);
|
|
||||||
TempDecodedStream.position := 0;
|
|
||||||
|
|
||||||
TempEncodedStream := TStringStream.Create('');
|
TempEncodedStream := TStringStream.Create('');
|
||||||
TempEncoder := TBase64EncodingStream.Create(TempEncodedStream);
|
TempEncoder := TBase64EncodingStream.Create(TempEncodedStream);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user