mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 21:51:22 +00:00 
			
		
		
		
	Merge pull request #41773 from ThakeeNathees/default-argument-override-buf-fix
GDScript default argument override bug fix
This commit is contained in:
		
						commit
						0019aa940e
					
				
					 4 changed files with 15 additions and 7 deletions
				
			
		|  | @ -40,10 +40,6 @@ uint32_t GDScriptByteCodeGenerator::add_parameter(const StringName &p_name, bool | |||
| 	function->_argument_count++; | ||||
| 	function->argument_types.push_back(p_type); | ||||
| 	if (p_is_optional) { | ||||
| 		if (function->_default_arg_count == 0) { | ||||
| 			append(GDScriptFunction::OPCODE_JUMP_TO_DEF_ARGUMENT); | ||||
| 		} | ||||
| 		function->default_arguments.push_back(opcodes.size()); | ||||
| 		function->_default_arg_count++; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -96,7 +92,12 @@ void GDScriptByteCodeGenerator::pop_temporary() { | |||
| 	current_temporaries--; | ||||
| } | ||||
| 
 | ||||
| void GDScriptByteCodeGenerator::start_parameters() {} | ||||
| void GDScriptByteCodeGenerator::start_parameters() { | ||||
| 	if (function->_default_arg_count > 0) { | ||||
| 		append(GDScriptFunction::OPCODE_JUMP_TO_DEF_ARGUMENT); | ||||
| 		function->default_arguments.push_back(opcodes.size()); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void GDScriptByteCodeGenerator::end_parameters() { | ||||
| 	function->default_arguments.invert(); | ||||
|  | @ -167,7 +168,7 @@ GDScriptFunction *GDScriptByteCodeGenerator::write_end() { | |||
| 	} | ||||
| 
 | ||||
| 	if (function->default_arguments.size()) { | ||||
| 		function->_default_arg_count = function->default_arguments.size(); | ||||
| 		function->_default_arg_count = function->default_arguments.size() - 1; | ||||
| 		function->_default_arg_ptr = &function->default_arguments[0]; | ||||
| 	} else { | ||||
| 		function->_default_arg_count = 0; | ||||
|  | @ -633,6 +634,11 @@ void GDScriptByteCodeGenerator::write_assign_false(const Address &p_target) { | |||
| 	append(p_target); | ||||
| } | ||||
| 
 | ||||
| void GDScriptByteCodeGenerator::write_assign_default_parameter(const Address &p_dst, const Address &p_src) { | ||||
| 	write_assign(p_dst, p_src); | ||||
| 	function->default_arguments.push_back(opcodes.size()); | ||||
| } | ||||
| 
 | ||||
| void GDScriptByteCodeGenerator::write_cast(const Address &p_target, const Address &p_source, const GDScriptDataType &p_type) { | ||||
| 	int index = 0; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 George Marques
						George Marques