mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-10 22:36:17 +02:00
Cocoa: fix possible nil pointer crash created by prior memory leak cleanup, issue #40167
This commit is contained in:
parent
0deadb0dbb
commit
edaa81c763
@ -205,25 +205,25 @@ var
|
|||||||
// when the tracking loop is over
|
// when the tracking loop is over
|
||||||
//
|
//
|
||||||
// See topic: https://forum.lazarus.freepascal.org/index.php/topic,56419.0.html
|
// See topic: https://forum.lazarus.freepascal.org/index.php/topic,56419.0.html
|
||||||
menuTrack : TList = nil;
|
menuTrack : NSMutableArray;
|
||||||
|
|
||||||
procedure MenuTrackStarted(mn: NSMenu);
|
procedure MenuTrackStarted(mn: NSMenu);
|
||||||
begin
|
begin
|
||||||
if not Assigned(menuTrack) then menuTrack:=TList.Create;
|
if menuTrack = nil then menuTrack := NSMutableArray.alloc.init;
|
||||||
menuTrack.Add(mn);
|
menuTrack.addObject(mn);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure MenuTrackEnded(mn: NSMenu);
|
procedure MenuTrackEnded(mn: NSMenu);
|
||||||
var
|
var
|
||||||
i : integer;
|
i : integer;
|
||||||
begin
|
begin
|
||||||
if not Assigned(menuTrack) then
|
if menuTrack = nil then
|
||||||
// it's possible if popup menu was used, without mainmenu in the app
|
// it's possible if popup menu was used, without mainmenu in the app
|
||||||
Exit;
|
Exit;
|
||||||
|
|
||||||
i := menuTrack.IndexOf(mn);
|
i := menuTrack.indexOfObject(mn);
|
||||||
if i>=0 then
|
if i >= 0 then
|
||||||
menuTrack.Delete(i);
|
menuTrack.removeObjectAtIndex(i);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure MenuTrackCancelAll;
|
procedure MenuTrackCancelAll;
|
||||||
@ -231,13 +231,13 @@ var
|
|||||||
i : integer;
|
i : integer;
|
||||||
mn : NSMenu;
|
mn : NSMenu;
|
||||||
begin
|
begin
|
||||||
if not Assigned(menuTrack) then Exit;
|
if menuTrack = nil then Exit;
|
||||||
for i:=menuTrack.Count-1 downto 0 do begin
|
for i:=menuTrack.count - 1 downto 0 do begin
|
||||||
mn := NSMenu(menuTrack[i]);
|
mn := NSMenu(menuTrack.objectAtIndex(i));
|
||||||
if Assigned(mn) then
|
if Assigned(mn) then
|
||||||
mn.cancelTracking;
|
mn.cancelTracking;
|
||||||
end;
|
end;
|
||||||
menuTrack.Clear;
|
menuTrack.removeAllObjects;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function LCLMenuItemInit(item: NSMenuItem; const atitle: string; ashortCut: TShortCut): id;
|
function LCLMenuItemInit(item: NSMenuItem; const atitle: string; ashortCut: TShortCut): id;
|
||||||
@ -1074,6 +1074,6 @@ initialization
|
|||||||
|
|
||||||
finalization
|
finalization
|
||||||
MenuTrackCancelAll;
|
MenuTrackCancelAll;
|
||||||
if Assigned(menuTrack) then menuTrack.Free;
|
if menuTrack <> nil then menuTrack.release;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
Loading…
Reference in New Issue
Block a user