@@ -2252,6 +2252,10 @@ QVariant QgsExpression::NodeBinaryOperator::eval( QgsExpression* parent, const Q
2252
2252
// both are integers - let's use integer arithmetics
2253
2253
int iL = getIntValue ( vL, parent ); ENSURE_NO_EVAL_ERROR;
2254
2254
int iR = getIntValue ( vR, parent ); ENSURE_NO_EVAL_ERROR;
2255
+
2256
+ if ( mOp == boMod && iR == 0 )
2257
+ return QVariant ();
2258
+
2255
2259
return QVariant ( computeInt ( iL, iR ) );
2256
2260
}
2257
2261
else if ( isDateTimeSafe ( vL ) && isIntervalSafe ( vR ) )
@@ -2270,7 +2274,7 @@ QVariant QgsExpression::NodeBinaryOperator::eval( QgsExpression* parent, const Q
2270
2274
// general floating point arithmetic
2271
2275
double fL = getDoubleValue ( vL, parent ); ENSURE_NO_EVAL_ERROR;
2272
2276
double fR = getDoubleValue ( vR, parent ); ENSURE_NO_EVAL_ERROR;
2273
- if ( mOp == boDiv && fR == 0 )
2277
+ if (( mOp == boDiv || mOp == boMod ) && fR == 0 . )
2274
2278
return QVariant (); // silently handle division by zero and return NULL
2275
2279
return QVariant ( computeDouble ( fL , fR ) );
2276
2280
}
@@ -2280,7 +2284,7 @@ QVariant QgsExpression::NodeBinaryOperator::eval( QgsExpression* parent, const Q
2280
2284
// integer division
2281
2285
double fL = getDoubleValue ( vL, parent ); ENSURE_NO_EVAL_ERROR;
2282
2286
double fR = getDoubleValue ( vR, parent ); ENSURE_NO_EVAL_ERROR;
2283
- if ( fR == 0 )
2287
+ if ( fR == 0 . )
2284
2288
return QVariant (); // silently handle division by zero and return NULL
2285
2289
return QVariant ( qFloor ( fL / fR ) );
2286
2290
}
0 commit comments