Don't crash in wxOSX wxDataViewChoiceRenderer if selection was cancelled.

Check for the index validity and ignore the value of -1 as it is passed if the
selection in the popup was cancelled.

Closes #16017.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76051 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2014-03-02 15:51:28 +00:00
parent 4c152f466f
commit b520eeab16

View File

@ -2876,8 +2876,19 @@ wxDataViewChoiceRenderer::OSXOnCellChanged(NSObject *value,
{
// At least under OS X 10.7 we get the index of the item selected and not
// its string.
const long choiceIndex = ObjectToLong(value);
// We can receive -1 if the selection was cancelled, just ignore it.
if ( choiceIndex == -1 )
return;
// If it's not -1, it must be valid, but avoid crashing in GetChoice()
// below if it isn't, for some reason.
wxCHECK_RET( choiceIndex >= 0 && (size_t)choiceIndex < GetChoices().size(),
wxS("Choice index out of range.") );
wxDataViewModel *model = GetOwner()->GetOwner()->GetModel();
model->ChangeValue(GetChoice(ObjectToLong(value)), item, col);
model->ChangeValue(GetChoice(choiceIndex), item, col);
}
bool wxDataViewChoiceRenderer::MacRender()