(svn r11716) -Fix [FS#1561]: don't put more than one Random() in function calls because parameter evaluation order is not guaranteed in the c++ standard (can lead to desyncs)
authorglx
Fri, 28 Dec 2007 16:21:29 +0000
changeset 8154 a074ca3d3e0a
parent 8153 3f5ba7ee376f
child 8155 ab1e6353db79
(svn r11716) -Fix [FS#1561]: don't put more than one Random() in function calls because parameter evaluation order is not guaranteed in the c++ standard (can lead to desyncs)
src/industry_cmd.cpp
--- a/src/industry_cmd.cpp	Fri Dec 28 15:27:12 2007 +0000
+++ b/src/industry_cmd.cpp	Fri Dec 28 16:21:29 2007 +0000
@@ -1612,7 +1612,11 @@
 			 * is nothing we can really do about that. */
 			if (Random() <= indspec->prospecting_chance) {
 				for (int i = 0; i < 5000; i++) {
-					const Industry *ind = CreateNewIndustryHelper(RandomTile(), p1, flags, indspec, RandomRange(indspec->num_table));
+					/* We should not have more than one Random() in a function call
+					 * because parameter evaluation order is not guaranteed in the c++ standard
+					 */
+					tile = RandomTile();
+					const Industry *ind = CreateNewIndustryHelper(tile, p1, flags, indspec, RandomRange(indspec->num_table));
 					if (ind != NULL) {
 						SetDParam(0, indspec->name);
 						if (indspec->new_industry_text > STR_LAST_STRINGID) {