Changeset - r3950:87b23e4e6188
[Not reviewed]
master
0 1 0
tron - 18 years ago 2006-06-04 13:03:48
tron@openttd.org
(svn r5096) Avoid unnecessary copying of _cmd_text
1 file changed with 5 insertions and 10 deletions:
ai/ai.c
5
10
0 comments (0 inline, 0 general)
ai/ai.c
Show inline comments
 
@@ -85,27 +85,24 @@ int32 AI_DoCommandCc(TileIndex tile, uin
 
{
 
	PlayerID old_lp;
 
	int32 res = 0;
 
	char *tmp_cmdtext = NULL;
 
	const char* tmp_cmdtext;
 

	
 
	/* If you enable DC_EXEC with DC_QUERY_COST you are a really strange
 
	 *   person.. should we check for those funny jokes?
 
	 */
 

	
 
	/* The test already free _cmd_text in most cases, so let's backup the string, else we have a problem ;) */
 
	if (_cmd_text != NULL)
 
		tmp_cmdtext = strdup(_cmd_text);
 
	/* The test already resets _cmd_text, so backup the pointer */
 
	tmp_cmdtext = _cmd_text;
 

	
 
	/* First, do a test-run to see if we can do this */
 
	res = DoCommand(tile, p1, p2, flags & ~DC_EXEC, procc);
 
	/* The command failed, or you didn't want to execute, or you are quering, return */
 
	if ((CmdFailed(res)) || !(flags & DC_EXEC) || (flags & DC_QUERY_COST)) {
 
		free(tmp_cmdtext);
 
		return res;
 
	}
 

	
 
	/* Recover _cmd_text */
 
	if (tmp_cmdtext != NULL)
 
		_cmd_text = tmp_cmdtext;
 
	/* Restore _cmd_text */
 
	_cmd_text = tmp_cmdtext;
 

	
 
	/* If we did a DC_EXEC, and the command did not return an error, execute it
 
	    over the network */
 
@@ -131,8 +128,6 @@ int32 AI_DoCommandCc(TileIndex tile, uin
 
	/* Set _local_player back */
 
	_local_player = old_lp;
 

	
 
	free(tmp_cmdtext);
 

	
 
	return res;
 
}
 

	
0 comments (0 inline, 0 general)