Hi,on Fred's advice, I was reorganizing GNUMails EditWindowController alloc and release.
Basically, previously, the GNUMail class alloc'd a controller and then forgot about it, relying that the controller auto-released by itself.
I now try to keep track of all controllers and release them by removing them from the controller array on window closure.
On Mac everything seems to work quite fine! On GNUstep I get this crash:
#0 0x29069c37 in objc_msgSend () from /usr/local/lib/libobjc.so.4.6
#1 0x287d26a4 in -[NSApplication(Private) _targetForAction:window:] (
_cmd=0x28a74ae0, window=0x28a74918) at NSApplication.m:3891
#2 0x287d27af in -[NSApplication(Private)
_targetForAction:keyWindow:mainWindow:] (self=0x2b8b6638,
_cmd=0x28a74a80, aSelector=<value optimized out>,
keyWindow=<value optimized out>, mainWindow=<value optimized out>)
at NSApplication.m:3936
รน#3 0x287ceff3 in -[NSApplication targetForAction:] (self=0x2b8b6638,
_cmd=0x28a74590) at NSApplication.m:2297
#4 0x287cef72 in -[NSApplication targetForAction:to:from:] (
self=<value optimized out>, _cmd=0x28aacd08,
theAction=<value optimized out>, theTarget=<value optimized out>,
sender=<value optimized out>) at NSApplication.m:2273
#5 0x2887ccf1 in -[NSMenu update] (self=<value optimized out>,
_cmd=0x28aad060) at NSMenu.m:1157
#6 0x2887cc03 in -[NSMenu update] (self=<value optimized out>,
_cmd=0x28a74a20) at NSMenu.m:1152
#7 0x287d2973 in -[NSApplication(Private) _windowDidBecomeKey:] (
self=<value optimized out>, _cmd=0x28a747f0, notification=0x2be60ee8)
at NSApplication.m:3986
#8 0x28d84df8 in -[NSObject performSelector:withObject:] (self=0x2b8b6638,
_cmd=<value optimized out>, aSelector=0x28a747f0, anObject=0x28a74918)
at NSObject.m:2046
#9 0x28d76de1 in -[NSNotificationCenter _postAndRelease:] (
self=<value optimized out>, _cmd=0x2be60ee8,
notification=<value optimized out>) at NSNotificationCenter.m:1190
#10 0x28d77328 in -[NSNotificationCenter
postNotificationName:object:userInfo:]
(self=0x2b9ca098, _cmd=0x28ff2cb0, name=0x28b021a8, object=0x2bf2ec88,
info=0x0) at NSNotificationCenter.m:1250
#11 0x28d7724e in -[NSNotificationCenter postNotificationName:object:] (
self=0x2b9ca098, _cmd=0x28af4748, name=0x28b021a8, object=0x2bf2ec88)
at NSNotificationCenter.m:1230
#12 0x2893d427 in -[NSWindow becomeKeyWindow] (self=0x2bf2ec88,
_cmd=0x28af4d40) at NSWindow.m:1575
#13 0x2893d874 in -[NSWindow makeKeyWindow] (self=<value optimized out>,
_cmd=0x28af4ce8) at NSWindow.m:1689
#14 0x2893932b in -[NSWindow(GNUstepPrivate) _lossOfKeyOrMainWindow] (
self=<value optimized out>, _cmd=0x28af4ef0) at NSWindow.m:322
#15 0x2893daef in -[NSWindow orderWindow:relativeTo:] (self=0x2bf31d48,
_cmd=0x28a6d0a0, otherWin=<value optimized out>) at NSWindow.m:1790
#16 0x2893da08 in -[NSWindow orderOut:] (self=0x2bf31d48, _cmd=0x28af4d58,
sender=0x2bf31d48) at NSWindow.m:1744
#17 0x2894134e in -[NSWindow close] (self=0x2bf31d48, _cmd=0x28af4140)
at NSWindow.m:2973
#18 0x28941c1b in -[NSWindow performClose:] (self=0x2bf31d48,
_cmd=0x28af4a80,
sender=0x2b8b6638) at NSWindow.m:3198
#19 0x289445cc in -[NSWindow sendEvent:] (self=<value optimized out>,
_cmd=0x4ecb, theEvent=<value optimized out>) at NSWindow.m:4103
What appears to happen is that it tries to get the first responder of
the window, and then its delegate and crashes there, thus the window has
no delegate anymore. In the debugger I tried to print out the window to
know which one it is, but I get a sound crash, thus perhaps even the
window isn't there anymore.
The delegate is set EditWindowController.m:213 Is there some difference between the NIB and the GS code? I do wonder.The delegate owns the, window, doesn't it? I am releasing the delegate. Why do I get in there? The notifications comes from becoming key apparently, but I am closing the window, the key should become the main MailViewer!
In fact, if I don't have a mail viewer open and just open a compose window, I can close it.
I'm confused. Hints or help is appreciated. I hate when stuff works on the Mac and then fails on GS...
Riccardo
<<attachment: riccardo_mottola.vcf>>
_______________________________________________ Discuss-gnustep mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnustep
