Clamp currentIndex from Qt which can come back as -1 in some cases

* If this gets propagated far enough and used as an index it can cause
  crashes, so we clamp to 0 when we know the value should be
  non-negative.
This commit is contained in:
baldurk
2017-10-24 12:56:31 +01:00
parent d887e25b8d
commit e23ddb98b3
5 changed files with 20 additions and 20 deletions
+1 -1
View File
@@ -3191,7 +3191,7 @@ void BufferViewer::on_solidShading_currentIndexChanged(int index)
m_Config.wireframeDraw = true;
}
m_Config.solidShadeMode = (SolidShade)index;
m_Config.solidShadeMode = (SolidShade)qMax(0, index);
m_ModelVSIn->setSecondaryColumn(m_ModelVSIn->secondaryColumn(),
m_Config.solidShadeMode == SolidShade::Secondary,
@@ -149,7 +149,7 @@ void EnvironmentEditor::on_addUpdate_clicked()
EnvironmentModification mod;
mod.name = ui->name->text().toUtf8().data();
mod.value = ui->value->text().toUtf8().data();
mod.sep = (EnvSep)ui->separator->currentIndex();
mod.sep = (EnvSep)qMax(0, ui->separator->currentIndex());
if(ui->appendValue->isChecked())
mod.mod = EnvMod::Append;
@@ -294,7 +294,7 @@ void SettingsDialog::on_EventBrowser_TimeUnit_currentIndexChanged(int index)
if(m_Init)
return;
m_Ctx.Config().EventBrowser_TimeUnit = (TimeUnit)ui->EventBrowser_TimeUnit->currentIndex();
m_Ctx.Config().EventBrowser_TimeUnit = (TimeUnit)qMax(0, ui->EventBrowser_TimeUnit->currentIndex());
if(m_Ctx.HasEventBrowser())
m_Ctx.GetEventBrowser()->UpdateDurationColumn();
@@ -191,7 +191,7 @@ void TextureSaveDialog::SetFilenameFromFiletype()
void TextureSaveDialog::on_fileFormat_currentIndexChanged(int index)
{
saveData.destType = (FileType)ui->fileFormat->currentIndex();
saveData.destType = (FileType)qMax(0, ui->fileFormat->currentIndex());
ui->jpegCompression->setEnabled(saveData.destType == FileType::JPG);
@@ -273,7 +273,7 @@ void TextureSaveDialog::on_oneMip_toggled(bool checked)
void TextureSaveDialog::on_mipSelect_currentIndexChanged(int index)
{
saveData.mip = index;
saveData.mip = qMax(0, index);
}
void TextureSaveDialog::on_mapSampleArray_toggled(bool checked)
@@ -344,7 +344,7 @@ void TextureSaveDialog::on_oneSample_toggled(bool checked)
void TextureSaveDialog::on_sampleSelect_currentIndexChanged(int index)
{
saveData.sample.sampleIndex = (uint32_t)index;
saveData.sample.sampleIndex = (uint32_t)qMax(0, index);
}
void TextureSaveDialog::on_exportAllSlices_toggled(bool checked)
@@ -466,7 +466,7 @@ void TextureSaveDialog::on_cubeCruciform_toggled(bool checked)
void TextureSaveDialog::on_sliceSelect_currentIndexChanged(int index)
{
saveData.slice.sliceIndex = index;
saveData.slice.sliceIndex = qMax(0, index);
}
void TextureSaveDialog::on_gridWidth_valueChanged(double arg1)
@@ -488,7 +488,7 @@ void TextureSaveDialog::on_alphaCol_clicked()
void TextureSaveDialog::on_alphaMap_currentIndexChanged(int index)
{
saveData.alpha = (AlphaMapping)index;
saveData.alpha = (AlphaMapping)qMax(0, index);
ui->alphaCol->setEnabled(saveData.alpha == AlphaMapping::BlendToColor);
}
@@ -546,7 +546,7 @@ void TextureSaveDialog::on_filename_textEdited(const QString &arg1)
void TextureSaveDialog::on_saveCancelButtons_accepted()
{
saveData.alpha = (AlphaMapping)ui->alphaMap->currentIndex();
saveData.alpha = (AlphaMapping)qMax(0, ui->alphaMap->currentIndex());
if(saveData.alpha == AlphaMapping::BlendToCheckerboard)
{
@@ -556,7 +556,7 @@ void TextureSaveDialog::on_saveCancelButtons_accepted()
if(ui->exportAllMips->isChecked())
saveData.mip = -1;
else
saveData.mip = (int)ui->mipSelect->currentIndex();
saveData.mip = (int)qMax(0, ui->mipSelect->currentIndex());
if(ui->resolveSamples->isChecked())
{
@@ -570,7 +570,7 @@ void TextureSaveDialog::on_saveCancelButtons_accepted()
}
else
{
saveData.sample.sampleIndex = (uint)ui->sampleSelect->currentIndex();
saveData.sample.sampleIndex = (uint)qMax(0, ui->sampleSelect->currentIndex());
saveData.sample.mapToArray = false;
}
@@ -578,7 +578,7 @@ void TextureSaveDialog::on_saveCancelButtons_accepted()
{
saveData.slice.cubeCruciform = saveData.slice.slicesAsGrid = false;
saveData.slice.sliceGridWidth = 1;
saveData.slice.sliceIndex = (int)ui->sliceSelect->currentIndex();
saveData.slice.sliceIndex = (int)qMax(0, ui->sliceSelect->currentIndex());
}
else
{
@@ -597,7 +597,7 @@ void TextureSaveDialog::on_saveCancelButtons_accepted()
}
}
saveData.destType = (FileType)ui->fileFormat->currentIndex();
saveData.destType = (FileType)qMax(0, ui->fileFormat->currentIndex());
saveData.jpegQuality = (int)ui->jpegCompression->value();
bool ok = false;
+7 -7
View File
@@ -1058,14 +1058,14 @@ void TextureViewer::UI_OnTextureSelectionChanged(bool newdraw)
m_TextureSettings[m_TexDisplay.texid].b = ui->channelBlue->isChecked();
m_TextureSettings[m_TexDisplay.texid].a = ui->channelAlpha->isChecked();
m_TextureSettings[m_TexDisplay.texid].displayType = ui->channels->currentIndex();
m_TextureSettings[m_TexDisplay.texid].displayType = qMax(0, ui->channels->currentIndex());
m_TextureSettings[m_TexDisplay.texid].customShader = ui->customShader->currentText();
m_TextureSettings[m_TexDisplay.texid].depth = ui->depthDisplay->isChecked();
m_TextureSettings[m_TexDisplay.texid].stencil = ui->stencilDisplay->isChecked();
m_TextureSettings[m_TexDisplay.texid].mip = ui->mipLevel->currentIndex();
m_TextureSettings[m_TexDisplay.texid].slice = ui->sliceFace->currentIndex();
m_TextureSettings[m_TexDisplay.texid].mip = qMax(0, ui->mipLevel->currentIndex());
m_TextureSettings[m_TexDisplay.texid].slice = qMax(0, ui->sliceFace->currentIndex());
m_TextureSettings[m_TexDisplay.texid].minrange = ui->rangeHistogram->blackPoint();
m_TextureSettings[m_TexDisplay.texid].maxrange = ui->rangeHistogram->whitePoint();
@@ -3167,13 +3167,13 @@ void TextureViewer::on_mipLevel_currentIndexChanged(int index)
if(tex.mips > 1)
{
m_TexDisplay.mip = (uint32_t)index;
m_TexDisplay.mip = (uint32_t)qMax(0, index);
m_TexDisplay.sampleIdx = 0;
}
else
{
m_TexDisplay.mip = 0;
m_TexDisplay.sampleIdx = (uint32_t)index;
m_TexDisplay.sampleIdx = (uint32_t)qMax(0, index);
if(m_TexDisplay.sampleIdx == tex.msSamp)
m_TexDisplay.sampleIdx = ~0U;
}
@@ -3213,10 +3213,10 @@ void TextureViewer::on_sliceFace_currentIndexChanged(int index)
return;
TextureDescription &tex = *texptr;
m_TexDisplay.sliceFace = (uint32_t)index;
m_TexDisplay.sliceFace = (uint32_t)qMax(0, index);
if(tex.depth > 1)
m_TexDisplay.sliceFace = (uint32_t)(index << (int)m_TexDisplay.mip);
m_TexDisplay.sliceFace = (uint32_t)(qMax(0, index) << (int)m_TexDisplay.mip);
INVOKE_MEMFN(RT_UpdateVisualRange);