소스 검색

Fixed bug with default arguments in gdscript, closes #2024

Juan Linietsky 9 년 전
부모
커밋
cb39db0b02
2개의 변경된 파일3개의 추가작업 그리고 1개의 파일을 삭제
  1. 2 1
      modules/gdscript/gd_compiler.cpp
  2. 1 0
      modules/gdscript/gd_script.cpp

+ 2 - 1
modules/gdscript/gd_compiler.cpp

@@ -1253,6 +1253,7 @@ Error GDCompiler::_parse_function(GDScript *p_script,const GDParser::ClassNode *
 	StringName func_name;
 
 	if (p_func) {
+
 		if (p_func->default_values.size()) {
 
 			codegen.opcodes.push_back(GDFunction::OPCODE_JUMP_TO_DEF_ARGUMENT);
@@ -1346,7 +1347,7 @@ Error GDCompiler::_parse_function(GDScript *p_script,const GDParser::ClassNode *
 	if (defarg_addr.size()) {
 
 		gdfunc->default_arguments=defarg_addr;
-		gdfunc->_default_arg_count=defarg_addr.size();
+		gdfunc->_default_arg_count=defarg_addr.size()-1;
 		gdfunc->_default_arg_ptr=&gdfunc->default_arguments[0];
 	} else {
 		gdfunc->_default_arg_count=0;

+ 1 - 0
modules/gdscript/gd_script.cpp

@@ -221,6 +221,7 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
 				r_err.error=Variant::CallError::CALL_ERROR_TOO_MANY_ARGUMENTS;
 				r_err.argument=_argument_count;
 
+
 				return Variant();
 			} else if (p_argcount < _argument_count - _default_arg_count) {