(svn r6407) -Fix: Check return values of DoCommand() with CmdFailed and that of DoCommandP
authorDarkvater
Tue, 05 Sep 2006 23:43:42 +0000
changeset 4560 f744bf3dd85a
parent 4559 c853d2440065
child 4561 0779e5c11331
(svn r6407) -Fix: Check return values of DoCommand() with CmdFailed and that of DoCommandP
with a boolean type.
ai/default/default.c
clear_cmd.c
vehicle.c
--- a/ai/default/default.c	Tue Sep 05 23:21:41 2006 +0000
+++ b/ai/default/default.c	Tue Sep 05 23:43:42 2006 +0000
@@ -292,7 +292,7 @@
 	uint 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;
 	}
 }
--- a/clear_cmd.c	Tue Sep 05 23:21:41 2006 +0000
+++ b/clear_cmd.c	Tue Sep 05 23:43:42 2006 +0000
@@ -138,7 +138,7 @@
 
 	ret = DoCommand(tile, 0,0, ts->flags & ~DC_EXEC, CMD_LANDSCAPE_CLEAR);
 
-	if (ret == CMD_ERROR) {
+	if (CmdFailed(ret)) {
 		_terraform_err_tile = tile;
 		return -1;
 	}
--- a/vehicle.c	Tue Sep 05 23:21:41 2006 +0000
+++ b/vehicle.c	Tue Sep 05 23:43:42 2006 +0000
@@ -2047,8 +2047,13 @@
 	/* Send all the vehicles to a depot */
 	for (i = 0; i < n; 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)) {
-			/* At least one vehicle is valid to send the command to, so the mass goto depot is valid. No need to check the rest */
+		int32 ret = DoCommand(v->tile, v->index, service | DEPOT_DONT_CANCEL, flags, CMD_SEND_TO_DEPOT(type));
+
+		/* 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);
 			return 0;
 		}