Field Editor told to replace range {0, NSUIntegerMax} : Range Exception

  • I'm working on a custom control (a token field), and apparently I've messed with the field editor somehow.  When I (as user) click on my control, but not in the focused NSTextView which is the field editor, and then type a character, a message is sent to the field editor telling it to replace text in the range {0, NSUIntegerMax} with the character that I typed.  (I see this by debugging into -[NSTextView(NSSharing) shouldChangeTextInRange:replacementString:].)  An range exception is raised because the field editor contains an empty string at this time.

    I suppose I could fix this by using a custom field editor and overriding that method, but I want the root cause.  Has anyone ever seen behavior like this?  As you can see from the edited call stack below, it all happens in Cocoa methods.  The NSTextView in lines 8-10 is indeed the field editor.

    Thanks,

    Jerry Krinock

    An uncaught exception was raised
    *** -[NSBigMutableString substringWithRange:]: Range or index out of bounds
    0  CoreFoundation  __raiseError + 231
    1  libobjc.A.dylib objc_exception_throw + 155
    2  CoreFoundation  +[NSException raise:format:arguments:] + 137
    3  CoreFoundation  +[NSException raise:format:] + 57
    4  Foundation      -[NSString substringWithRange:] + 111
    5  AppKit          -[NSTextStorage(NSUndo) _undoRedoAttributedSubstringFromRange:] + 171
    6  AppKit          -[NSUndoTyping initWithAffectedRange:layoutManager:undoManager:replacementRange:] + 181
    7  AppKit          -[NSTextViewSharedData coalesceInTextView:affectedRange:replacementRange:] + 440
    8  AppKit          -[NSTextView(NSSharing) shouldChangeTextInRanges:replacementStrings:] + 1779
    9  AppKit          -[NSTextView(NSSharing) shouldChangeTextInRange:replacementString:] + 123
    10  AppKit          -[NSTextView insertText:replacementRange:] + 498
    11  AppKit          -[NSTextInputContext insertText:replacementRange:] + 430
    12  AppKit          -[NSTextInputContext handleTSMEvent:] + 2654
    13  AppKit          _NSTSMEventHandler + 214
    14  HIToolbox      _Z22_InvokeEventHandlerUPPP25OpaqueEventHandlerCallRefP14OpaqueEventRefPvPFlS0_S2_S3_E + 36
    15  HIToolbox      _ZL23DispatchEventToHandlersP14EventTargetRecP14OpaqueEventRefP14HandlerCallRec + 1602
    16  HIToolbox      _ZL30SendEventToEventTargetInternalP14OpaqueEventRefP20OpaqueEventTargetRefP14HandlerCallRec + 482
    17  HIToolbox      SendEventToEventTarget + 76
    18  HIToolbox      SendTSMEvent + 74
    19  HIToolbox      SendUnicodeTextAEToUnicodeDoc + 753
    20  HIToolbox      TSMKeyEvent + 1007
    21  HIToolbox      TSMProcessRawKeyEvent + 2795
    22  AppKit          -[NSTextInputContext handleEvent:] + 1257
    23  AppKit          -[NSView interpretKeyEvents:] + 220
    24  AppKit          -[NSTextView keyDown:] + 676
    25  AppKit          -[NSWindow sendEvent:] + 10891
    26  AppKit          -[NSApplication sendEvent:] + 4788
    27  AppKit          -[NSApplication run] + 1007
    28  AppKit          NSApplicationMain + 1054
    29  TestApp        main + 245
    30  TestApp        start + 53
previous month july 2012 next month
MTWTFSS
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
Go to today