Skip to content

Commit aeecda3

Browse files
committed
Fix crash when no options are selected in a multiple-enum parameter
1 parent a6b14a0 commit aeecda3

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

src/core/processing/qgsprocessingparameters.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,9 @@ QList<int> QgsProcessingParameters::parameterAsEnums( const QgsProcessingParamet
158158
else
159159
resultList << val;
160160

161+
if ( resultList.isEmpty() )
162+
return QList< int >();
163+
161164
if ( ( !val.isValid() || !resultList.at( 0 ).isValid() ) && definition )
162165
{
163166
resultList.clear();

tests/src/core/testqgsprocessing.cpp

+9
Original file line numberDiff line numberDiff line change
@@ -2693,6 +2693,11 @@ void TestQgsProcessing::parameterEnum()
26932693
iNumbers = QgsProcessingParameters::parameterAsEnums( def.get(), params, context );
26942694
QCOMPARE( iNumbers, QList<int>() << 0 << 2 );
26952695

2696+
// empty list
2697+
params.insert( "non_optional", QVariantList() );
2698+
iNumbers = QgsProcessingParameters::parameterAsEnums( def.get(), params, context );
2699+
QCOMPARE( iNumbers, QList<int>() );
2700+
26962701
QCOMPARE( def->valueAsPythonString( QVariantList() << 1 << 2, context ), QStringLiteral( "[1,2]" ) );
26972702
QCOMPARE( def->valueAsPythonString( QStringLiteral( "1,2" ), context ), QStringLiteral( "[1,2]" ) );
26982703

@@ -2760,6 +2765,10 @@ void TestQgsProcessing::parameterEnum()
27602765
params.insert( "optional", QVariant() );
27612766
iNumbers = QgsProcessingParameters::parameterAsEnums( def.get(), params, context );
27622767
QCOMPARE( iNumbers, QList<int>() << 1 << 2 );
2768+
// empty list
2769+
params.insert( "optional", QVariantList() );
2770+
iNumbers = QgsProcessingParameters::parameterAsEnums( def.get(), params, context );
2771+
QCOMPARE( iNumbers, QList<int>() );
27632772

27642773
code = def->asScriptCode();
27652774
QCOMPARE( code, QStringLiteral( "##optional=optional enum multiple A;B;C 1,2" ) );

0 commit comments

Comments
 (0)