@@ -923,7 +923,10 @@ class OperatorEvaluatorStringFormat<S, void> {
923
923
static inline void validated_evaluate (const Variant *left, const Variant *right, Variant *r_ret) {
924
924
bool valid = true ;
925
925
String result = do_mod (*VariantGetInternalPtr<S>::get_ptr (left), &valid);
926
- ERR_FAIL_COND_MSG (!valid, result);
926
+ if (unlikely (!valid)) {
927
+ *VariantGetInternalPtr<String>::get_ptr (r_ret) = *VariantGetInternalPtr<S>::get_ptr (left);
928
+ ERR_FAIL_MSG (vformat (" String formatting error: %s." , result));
929
+ }
927
930
*VariantGetInternalPtr<String>::get_ptr (r_ret) = result;
928
931
}
929
932
static void ptr_evaluate (const void *left, const void *right, void *r_ret) {
@@ -948,7 +951,10 @@ class OperatorEvaluatorStringFormat<S, Array> {
948
951
static inline void validated_evaluate (const Variant *left, const Variant *right, Variant *r_ret) {
949
952
bool valid = true ;
950
953
String result = do_mod (*VariantGetInternalPtr<S>::get_ptr (left), *VariantGetInternalPtr<Array>::get_ptr (right), &valid);
951
- ERR_FAIL_COND_MSG (!valid, result);
954
+ if (unlikely (!valid)) {
955
+ *VariantGetInternalPtr<String>::get_ptr (r_ret) = *VariantGetInternalPtr<S>::get_ptr (left);
956
+ ERR_FAIL_MSG (vformat (" String formatting error: %s." , result));
957
+ }
952
958
*VariantGetInternalPtr<String>::get_ptr (r_ret) = result;
953
959
}
954
960
static void ptr_evaluate (const void *left, const void *right, void *r_ret) {
@@ -976,7 +982,10 @@ class OperatorEvaluatorStringFormat<S, Object> {
976
982
static inline void validated_evaluate (const Variant *left, const Variant *right, Variant *r_ret) {
977
983
bool valid = true ;
978
984
String result = do_mod (*VariantGetInternalPtr<S>::get_ptr (left), right->get_validated_object (), &valid);
979
- ERR_FAIL_COND_MSG (!valid, result);
985
+ if (unlikely (!valid)) {
986
+ *VariantGetInternalPtr<String>::get_ptr (r_ret) = *VariantGetInternalPtr<S>::get_ptr (left);
987
+ ERR_FAIL_MSG (vformat (" String formatting error: %s." , result));
988
+ }
980
989
*VariantGetInternalPtr<String>::get_ptr (r_ret) = result;
981
990
}
982
991
static void ptr_evaluate (const void *left, const void *right, void *r_ret) {
@@ -1003,7 +1012,10 @@ class OperatorEvaluatorStringFormat {
1003
1012
static inline void validated_evaluate (const Variant *left, const Variant *right, Variant *r_ret) {
1004
1013
bool valid = true ;
1005
1014
String result = do_mod (*VariantGetInternalPtr<S>::get_ptr (left), *VariantGetInternalPtr<T>::get_ptr (right), &valid);
1006
- ERR_FAIL_COND_MSG (!valid, result);
1015
+ if (unlikely (!valid)) {
1016
+ *VariantGetInternalPtr<String>::get_ptr (r_ret) = *VariantGetInternalPtr<S>::get_ptr (left);
1017
+ ERR_FAIL_MSG (vformat (" String formatting error: %s." , result));
1018
+ }
1007
1019
*VariantGetInternalPtr<String>::get_ptr (r_ret) = result;
1008
1020
}
1009
1021
static void ptr_evaluate (const void *left, const void *right, void *r_ret) {
@@ -1492,7 +1504,10 @@ class OperatorEvaluatorObjectHasPropertyString {
1492
1504
}
1493
1505
static inline void validated_evaluate (const Variant *left, const Variant *right, Variant *r_ret) {
1494
1506
Object *l = right->get_validated_object ();
1495
- ERR_FAIL_NULL (l);
1507
+ if (unlikely (!l)) {
1508
+ *VariantGetInternalPtr<bool >::get_ptr (r_ret) = false ;
1509
+ ERR_FAIL_MSG (" Invalid base object for 'in'." );
1510
+ }
1496
1511
const String &a = *VariantGetInternalPtr<String>::get_ptr (left);
1497
1512
1498
1513
bool valid;
@@ -1526,7 +1541,10 @@ class OperatorEvaluatorObjectHasPropertyStringName {
1526
1541
}
1527
1542
static inline void validated_evaluate (const Variant *left, const Variant *right, Variant *r_ret) {
1528
1543
Object *l = right->get_validated_object ();
1529
- ERR_FAIL_NULL (l);
1544
+ if (unlikely (!l)) {
1545
+ *VariantGetInternalPtr<bool >::get_ptr (r_ret) = false ;
1546
+ ERR_FAIL_MSG (" Invalid base object for 'in'." );
1547
+ }
1530
1548
const StringName &a = *VariantGetInternalPtr<StringName>::get_ptr (left);
1531
1549
1532
1550
bool valid;
0 commit comments