(svn r6407) -Fix: Check return values of DoCommand() with CmdFailed and that of DoCommandP
with a boolean type.
This commit is contained in:
		| @@ -292,7 +292,7 @@ static void AiRestoreVehicleOrders(Vehicle *v, BackuppedOrders *bak) | |||||||
| 	uint i; | 	uint i; | ||||||
|  |  | ||||||
| 	for (i = 0; bak->order[i].type != OT_NOTHING; i++) { | 	for (i = 0; bak->order[i].type != OT_NOTHING; i++) { | ||||||
| 		if (CmdFailed(DoCommandP(0, v->index + (i << 16), PackOrder(&bak->order[i]), NULL, CMD_INSERT_ORDER | CMD_NO_TEST_IF_IN_NETWORK))) | 		if (!DoCommandP(0, v->index + (i << 16), PackOrder(&bak->order[i]), NULL, CMD_INSERT_ORDER | CMD_NO_TEST_IF_IN_NETWORK)) | ||||||
| 			break; | 			break; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|   | |||||||
| @@ -138,7 +138,7 @@ static int TerraformProc(TerraformerState *ts, TileIndex tile, int mode) | |||||||
|  |  | ||||||
| 	ret = DoCommand(tile, 0,0, ts->flags & ~DC_EXEC, CMD_LANDSCAPE_CLEAR); | 	ret = DoCommand(tile, 0,0, ts->flags & ~DC_EXEC, CMD_LANDSCAPE_CLEAR); | ||||||
|  |  | ||||||
| 	if (ret == CMD_ERROR) { | 	if (CmdFailed(ret)) { | ||||||
| 		_terraform_err_tile = tile; | 		_terraform_err_tile = tile; | ||||||
| 		return -1; | 		return -1; | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -2047,8 +2047,13 @@ int32 SendAllVehiclesToDepot(byte type, uint32 flags, bool service, PlayerID own | |||||||
| 	/* Send all the vehicles to a depot */ | 	/* Send all the vehicles to a depot */ | ||||||
| 	for (i = 0; i < n; i++) { | 	for (i = 0; i < n; i++) { | ||||||
| 		const Vehicle *v = sort_list[i]; | 		const Vehicle *v = sort_list[i]; | ||||||
| 		if (!DoCommand(v->tile, v->index, service | DEPOT_DONT_CANCEL, flags, CMD_SEND_TO_DEPOT(type)) && !(flags & DC_EXEC)) { | 		int32 ret = DoCommand(v->tile, v->index, service | DEPOT_DONT_CANCEL, flags, CMD_SEND_TO_DEPOT(type)); | ||||||
| 			/* At least one vehicle is valid to send the command to, so the mass goto depot is valid. No need to check the rest */ |  | ||||||
|  | 		/* Return 0 if DC_EXEC is not set this is a valid goto depot command) | ||||||
|  | 			* In this case we know that at least one vehicle can be sent to a depot | ||||||
|  | 			* and we will issue the command. We can now safely quit the loop, knowing | ||||||
|  | 			* it will succeed at least once. With DC_EXEC we really need to send them to the depot */ | ||||||
|  | 		if (!CmdFailed(ret) && !(flags & DC_EXEC)) { | ||||||
| 			free((void*)sort_list); | 			free((void*)sort_list); | ||||||
| 			return 0; | 			return 0; | ||||||
| 		} | 		} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Darkvater
					Darkvater