Re: Duplicating an edited document in 10.7.1
Re: Duplicating an edited document in 10.7.1
- Subject: Re: Duplicating an edited document in 10.7.1
- From: Kevin Perry <email@hidden>
- Date: Tue, 20 Sep 2011 08:40:10 -0700
There's a bug in NSDocument in that it doesn't protect itself against nil return values from -fileNameExtensionForType:saveOperation:. To work around, make sure you return a non-nil value from that method.
-KP
On Sep 20, 2011, at 2:49 AM, Gerriet M. Denkmann wrote:
> In my toy editor I open an existing document, modify it and click "Duplicate".
>
> A Sheet comes down and tells me that the duplicate will contain my latest modifications.
> I click the default "Duplicate" button and get:
>
> 2011-09-20 16:29:43.164 TextEditor[4062:707] *** -[NSPathStore2 stringByAppendingPathExtension:]: nil argument
> 2011-09-20 16:29:43.213 TextEditor[4062:707] (
> 0 CoreFoundation 0x00007fff8742a986 __exceptionPreprocess + 198
> 1 libobjc.A.dylib 0x00007fff80f84d5e objc_exception_throw + 43
> 2 CoreFoundation 0x00007fff8742a7ba +[NSException raise:format:arguments:] + 106
> 3 CoreFoundation 0x00007fff8742a744 +[NSException raise:format:] + 116
> 4 Foundation 0x00007fff89d8a172 -[NSPathStore2 stringByAppendingPathExtension:] + 112
> 5 AppKit 0x00007fff845808c3 -[NSDocument _preserveCurrentVersionForReason:error:] + 579
> 6 AppKit 0x00007fff84586bc3 __-[NSDocument duplicateDocumentWithDelegate:didDuplicateSelector:contextInfo:]_block_invoke_3 + 119
> 7 AppKit 0x00007fff845819a9 -[NSDocument _something:wasPresentedWithResult:soContinue:] + 21
> 8 AppKit 0x00007fff84472bee -[NSAlert didEndAlert:returnCode:contextInfo:] + 93
> 9 AppKit 0x00007fff8447f356 -[NSApplication endSheet:returnCode:] + 275
> 10 AppKit 0x00007fff84472ab4 -[NSAlert buttonPressed:] + 265
> 11 CoreFoundation 0x00007fff8741a11d -[NSObject performSelector:withObject:] + 61
> 12 AppKit 0x00007fff842ce852 -[NSApplication sendAction:to:from:] + 139
> 13 AppKit 0x00007fff842ce784 -[NSControl sendAction:to:] + 88
> 14 AppKit 0x00007fff842ce6af -[NSCell _sendActionFrom:] + 137
> 15 AppKit 0x00007fff844d758a -[NSButtonCell performClick:] + 594
> 16 AppKit 0x00007fff84337afd -[NSButton performKeyEquivalent:] + 368
> 17 AppKit 0x00007fff84337722 -[NSView _performKeyEquivalent:conditionally:] + 45
> 18 AppKit 0x00007fff8433796d -[NSControl _performKeyEquivalent:conditionally:] + 119
> 19 AppKit 0x00007fff84337850 -[NSView performKeyEquivalent:] + 155
> 20 AppKit 0x00007fff84473d06 -[_NSAlertContentView performKeyEquivalent:] + 92
> 21 AppKit 0x00007fff84337722 -[NSView _performKeyEquivalent:conditionally:] + 45
> 22 AppKit 0x00007fff84337850 -[NSView performKeyEquivalent:] + 155
> 23 AppKit 0x00007fff84337722 -[NSView _performKeyEquivalent:conditionally:] + 45
> 24 AppKit 0x00007fff84337695 -[NSWindow performKeyEquivalent:] + 58
> 25 AppKit 0x00007fff8485caeb -[NSWindow keyDown:] + 74
> 26 AppKit 0x00007fff84297ad2 -[NSWindow sendEvent:] + 7404
> 27 AppKit 0x00007fff8422ff19 -[NSApplication sendEvent:] + 5665
> 28 AppKit 0x00007fff841c642b -[NSApplication run] + 548
> 29 AppKit 0x00007fff8444452a NSApplicationMain + 867
> 30 TextEditor 0x0000000100001bc0 main + 32
> 31 TextEditor 0x0000000100001b94 start + 52
> 32 ??? 0x0000000000000001 0x0 + 1
> )
>
> TextEdit can duplicate a modified document without any problems.
>
> So obviously my program does something not quite right.
> But as there is hardly any of my own code in this backtrace, how can I debug this?
>
>
> Kind regards,
>
> Gerriet.
>
>
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden