gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Odd problem with NSSavePanel


From: Fred Kiefer
Subject: Re: Odd problem with NSSavePanel
Date: Thu, 9 Jan 2014 09:15:07 +0100

Hi German,

I did some investigations into this myself but didn't write about it, as I 
couldn't pin down the issue. I don't think the filename is empty when the code 
crashes. Rather it is filled with an already released value. You may check that 
in gbd, the variable has a value but dereferencing it crashes gdb.
Most likely the release happens outside of the save panel, otherwise we would 
have the problem with all document applications. At least we should protect the 
save panel against this by returning a copy from that method. I hope to find 
time for this tomorrow.

Fred

On the road

Am 09.01.2014 um 08:07 schrieb Germán Arias <address@hidden>:

> Well, after some research I'm more confused. I'm not sure, but I think that 
> _fullFileName and _allowedFileTypes are involved in  this problem. At some 
> moment these variables don't store anything. So, the method -filename don't 
> return anything, and call -length over the returned value crashed the program.
> 
> The other problem I see is that _fullFileName depends of returned value from 
> -filename. You can see this at line 608 on NSSavePanel.m. The parameter 
> filename is the returned value of -filename (see method -runModal). At line 
> 608, what happen when pass a parameter that don't contains anything?
> 
> Furthermore, I noticed other strange problem with SavePanel. For example: 
> launch Ink, write something at the document and save this. Now close the 
> document and creates a new one. Write something in this new document and save 
> this. If you notice, the save panel puts the full path of previous saved 
> document. See attached image. Why do this the panel?
> 
> <savepanel.jpg>
> 
> 
>> On 2014-01-07 12:45:58 -0600 Germán Arias <address@hidden> wrote:
>> 
>> I'm having a problem with Gemas and NSSavePanel. You can reproduce it with 
>> these steps:
>> 
>> * Launch Gemas.
>> * Create a new file of type "Other" (Document -> New File -> Other).
>> * Write something.
>> * Save the file (don't add an extension).
>> * Close the document.
>> * Create a new file of type "Other".
>> * Write something.
>> * Try to save this, the app crash.
>> 
>> At GemasInfo.plist the extension of this type is described as ( * ), this is 
>> any file. And this problem only occurs with types that have its extension 
>> like this one.
>> 
>> Here the backtrace:
>> 
>> (gdb) backtrace
>> #0  0x00a992c6 in objc_msg_lookup () from 
>> /usr/lib/i386-linux-gnu/libobjc.so.3
>> #1  0x0032866b in -[NSSavePanel(PrivateMethods) _selectCellName:] (
>>    self=0x82bfa28, _cmd=0x55f520, title=0x8548ea0) at NSSavePanel.m:528
>> #2  0x00328af5 in -[NSSavePanel(PrivateMethods) _setFileName:] (
>>    self=0x82bfa28, _cmd=0x55f588, filename=0x8548ea0) at NSSavePanel..m:587
>> #3  0x00328d13 in -[NSSavePanel(PrivateMethods) _setupForDirectory:file:] (
>>    self=0x82bfa28, _cmd=0x55f1b0, path=0x821c928, filename=0x8548ea0)
>>    at NSSavePanel.m:610
>> #4  0x00329c8d in -[NSSavePanel runModalForDirectory:file:] (self=0x82bfa28,
>>    _cmd=0x55f6a0, path=0x821c928, filename=0x8548ea0) at NSSavePanel..m:1140
>> #5  0x00329ba6 in -[NSSavePanel runModal] (self=0x82bfa28, _cmd=0x518e10)
>>    at NSSavePanel.m:1111
>> #6  0x00285fbb in -[NSDocument runModalSavePanel:withAccessoryView:] (
>>    self=0x837c278, _cmd=0x518ef0, savePanel=0x82bfa28,
>>    accessoryView=0x84c4f68) at NSDocument.m:1088
>> #7  0x00289be7 in -[NSDocument _runSavePanelForSaveOperation:] (
>>    self=0x837c278, _cmd=0x518ef8, saveOperation=NSSaveOperation)
>>    at NSDocument.m:1203
>> #8  0x00286319 in -[NSDocument 
>> runModalSavePanelForSaveOperation:delegate:didSaveSelector:contextInfo:] 
>> (self=0x837c278, _cmd=0x519020,
>>    saveOperation=NSSaveOperation, delegate=0x0, didSaveSelector=0x0,
>>    contextInfo=0x0) at NSDocument.m:1229
>> #9  0x0028745d in -[NSDocument 
>> saveDocumentWithDelegate:didSaveSelector:contextInfo:] (self=0x837c278, 
>> _cmd=0x519018, delegate=0x0, didSaveSelector=0x0,
>> ---Type <return> to continue, or q <return> to quit---
>>    contextInfo=0x0) at NSDocument.m:1564
>> #10 0x002872c1 in -[NSDocument saveDocument:] (self=0x837c278, 
>> _cmd=0x8147910,
>>    sender=0x83080e0) at NSDocument.m:1524
>> #11 0x0020ce97 in -[NSApplication sendAction:to:from:] (self=0x81253f8,
>>    _cmd=0x53ef50, aSelector=0x8147910, aTarget=0x0, sender=0x83080e0)
>>    at NSApplication.m:2230
>> #12 0x002e2c64 in -[NSMenu performActionForItemAtIndex:] (self=0x8302618,
>>    _cmd=0x5420a0, index=4) at NSMenu.m:1323
>> #13 0x002ecb6a in -[NSMenuView _trackWithEvent:startingMenuView:] (
>>    self=0x8309300, _cmd=0x542118, event=<optimized out>,
>>    mainWindowMenuView=0x0) at NSMenuView.m:1916
>> #14 0x002eb113 in -[NSMenuView trackWithEvent:] (self=0x8309300,
>>    _cmd=0x542188, event=0x833e558) at NSMenuView.m:1948
>> #15 0x002eb414 in -[NSMenuView mouseDown:] (self=0x8309300, _cmd=0x59fff0,
>>    theEvent=0x833e558) at NSMenuView.m:1988
>> #16 0x003d6724 in -[NSWindow sendEvent:] (self=0x8308630, _cmd=0x4eaf40,
>>    theEvent=0x833e558) at NSWindow.m:3896
>> #17 0x00211f7b in -[NSApplication sendEvent:] (self=0x81253f8, _cmd=0x4eae78,
>>    theEvent=0x833e558) at NSApplication.m:2105
>> #18 0x002144eb in -[NSApplication run] (self=0x81253f8, _cmd=0x4e1348)
>>    at NSApplication.m:1562
>> #19 0x001f1f0f in NSApplicationMain (argc=1, argv=0xbfffe404) at 
>> Functions.m:91
>> #20 0x08048fe7 in main (argc=1, argv=0xbfffe404) at Gemas_main.m:26
>> 
>> Any advice?
>> 
>> Thanks.
>> Germán.
>> 
>> 
>> _______________________________________________
>> Gnustep-dev mailing list
>> address@hidden
>> https://lists.gnu.org/mailman/listinfo/gnustep-dev
>> 
>> 
> <savepanel.jpg>
> _______________________________________________
> Gnustep-dev mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/gnustep-dev



reply via email to

[Prev in Thread] Current Thread [Next in Thread]