@ -335,17 +335,26 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
GET_VARIANT_PTR ( b , 3 ) ;
GET_VARIANT_PTR ( dst , 4 ) ;
# ifdef DEBUG_ENABLED
Variant ret ;
Variant : : evaluate ( op , * a , * b , ret , valid ) ;
# else
Variant : : evaluate ( op , * a , * b , * dst , valid ) ;
# endif
if ( ! valid ) {
if ( dst - > get_type ( ) = = Variant : : STRING ) {
if ( ret. get_type ( ) = = Variant : : STRING ) {
//return a string when invalid with the error
err_text = * ds t;
err_text = re t;
err_text + = " in operator ' " + Variant : : get_operator_name ( op ) + " '. " ;
} else {
err_text = " Invalid operands ' " + Variant : : get_type_name ( a - > get_type ( ) ) + " ' and ' " + Variant : : get_type_name ( b - > get_type ( ) ) + " ' in operator ' " + Variant : : get_operator_name ( op ) + " '. " ;
}
break ;
}
# ifdef DEBUG_ENABLED
* dst = ret ;
# endif
ip + = 5 ;
@ -457,8 +466,13 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
GET_VARIANT_PTR ( dst , 3 ) ;
bool valid ;
# ifdef DEBUG_ENABLED
//allow better error message in cases where src and dst are the same stack position
Variant ret = src - > get ( * index , & valid ) ;
# else
* dst = src - > get ( * index , & valid ) ;
# endif
if ( ! valid ) {
String v = index - > operator String ( ) ;
if ( v ! = " " ) {
@ -469,6 +483,9 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
err_text = " Invalid get index " + v + " (on base: ' " + _get_var_type ( src ) + " '). " ;
break ;
}
# ifdef DEBUG_ENABLED
* dst = ret ;
# endif
ip + = 4 ;
} continue ;
case OPCODE_SET_NAMED : {
@ -508,7 +525,13 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
const StringName * index = & _global_names_ptr [ indexname ] ;
bool valid ;
# ifdef DEBUG_ENABLED
//allow better error message in cases where src and dst are the same stack position
Variant ret = src - > get_named ( * index , & valid ) ;
# else
* dst = src - > get_named ( * index , & valid ) ;
# endif
if ( ! valid ) {
if ( src - > has_method ( * index ) ) {
@ -518,7 +541,9 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
}
break ;
}
# ifdef DEBUG_ENABLED
* dst = ret ;
# endif
ip + = 4 ;
} continue ;
case OPCODE_ASSIGN : {