Re: NSPopUpButtonCell (was: Disappointed by GNUstep)
Sergei Golovin <[email protected]> Wed, 09 Feb 2022 07:46:08 +0400
| Newsgroups | gmane.comp.lib.gnustep.devel |
|---|---|
| Message-ID | <[email protected]> |
On 2022-02-08 21:35:55 +0400 Wolfgang Lux <[email protected]> wrote: >> _menu is owned by a superclass and released there. See -[NSCell >> dealloc]. > Doh, you are right. > I somehow convinced myself into believing that _menu was an instance > variable > of NSPopUpButtonCell . :-( I also thought along that line initially but NSPopUpButtonCell retains _menu in its own -[setMenu:]. > Now what is confusing me is that by applying your patch we are full > circle > back to before b7f5fb2, which had added the call to setMenu: to the > dealloc > method in the first place. According to the log this was done in an > attempt > to fix a leak of the menu. It feels like I'm missing something here. The method -[setMenu:] moves from a state with menuA to a state with menuB. The -[deallloc] is special. It should take the current state, clear it and go to void. Besides that there is no point to have _menu == nil somewhere in a running application except for initialization and deallocation. An empty menu should be of NSMenu anyway, not nil. So instead of the call -[setMenu: nil] (illegitimate in my opinion) only a bunch of -[release] is required to avoid leaking (as you suggested/pointed out). May be something like -[clear] to do things I overlooked. https://github.com/gnustep/libs-gui/pull/137 -- SG -- SG