Merge branch 'fix_gtk2_clipboard_leak' into 'main'

gtk2: fix resource leak (gtk_clipboard_wait_for_contents). Issue #40499

See merge request freepascal.org/lazarus/lazarus!235
This commit is contained in:
Maxim Ganetsky 2023-09-10 16:20:32 +00:00
commit a018a3ca41
No known key found for this signature in database

View File

@ -7600,6 +7600,7 @@ var
TimeID: cardinal;
EventData: PClipboardEventData;
TypeAtom: TGdkAtom;
GtkSelectionDataPtr: PGtkSelectionData;
begin
{$IFDEF DEBUG_CLIPBOARD}
DebugLn('[RequestSelectionData] FormatID=',dbgs(FormatID));
@ -7634,8 +7635,10 @@ begin
// WaitForClipboardAnswer provides a timeout as in some cases
// gtk_clipboard_wait_for_contents can wait forever
if WaitForClipboardAnswer(EventData) then begin
gtk_clipboard_wait_for_contents(gtk_clipboard_get(TypeAtom), FormatID);
Result:=EventData^.Data;
GtkSelectionDataPtr := gtk_clipboard_wait_for_contents(gtk_clipboard_get(TypeAtom), FormatID);
if GtkSelectionDataPtr <> nil then
gtk_selection_data_free(GtkSelectionDataPtr);
Result:=EventData^.Data; //why aren't we using the returned object from gtk_clipboard_wait_for_contents directly?
end;
end;
finally