changeset 2826:c50fd40c9d5b draft

(svn r3374) -Fix: [ FS#36 ] Don't allow trains to get bigger than 100 via drag and drop
author truelight <truelight@openttd.org>
date Fri, 06 Jan 2006 21:10:58 +0000
parents 7fa5565fc187
children b948ed221db9
files train_cmd.c
diffstat 1 files changed, 20 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/train_cmd.c
+++ b/train_cmd.c
@@ -991,19 +991,28 @@
 
 	if (IsMultiheaded(src) && !IsTrainEngine(src)) return_cmd_error(STR_REAR_ENGINE_FOLLOW_FRONT_ERROR);
 
-	/* check if all vehicles in the source train are stopped inside a depot */
-	if (CheckTrainStoppedInDepot(src_head) < 0) return CMD_ERROR;
-
-	/* check if all the vehicles in the dest train are stopped,
-	 * and that the length of the dest train is no longer than XXX vehicles */
-	if (dst_head != NULL) {
-		int num = CheckTrainStoppedInDepot(dst_head);
-		if (num < 0) return CMD_ERROR;
-
+	{
+		int r, num = 0;
+
+		r = CheckTrainStoppedInDepot(src_head);
+		/* check if all vehicles in the source train are stopped inside a depot */
+		if (r < 0) return CMD_ERROR;
+
+		num += r;
+
+		/* check if all the vehicles in the dest train are stopped */
+		if (dst_head != NULL) {
+			r = CheckTrainStoppedInDepot(dst_head);
+			if (r < 0) return CMD_ERROR;
+
+			num += r;
+
+			assert(dst_head->tile == src_head->tile);
+		}
+
+		/* Check that the length of the dest train is no longer than XXX vehicles */
 		if (num > (_patches.mammoth_trains ? 100 : 9) && IsFrontEngine(dst_head))
 			return_cmd_error(STR_8819_TRAIN_TOO_LONG);
-
-		assert(dst_head->tile == src_head->tile);
 	}
 
 	// when moving all wagons, we can't have the same src_head and dst_head