Browse Source

- fixed out of sync hero armies
- one more crash in garrison

Ivan Savenko 13 years ago
parent
commit
ec8e078ef8
2 changed files with 8 additions and 2 deletions
  1. 4 1
      client/GUIClasses.cpp
  2. 4 1
      lib/CGameState.cpp

+ 4 - 1
client/GUIClasses.cpp

@@ -371,8 +371,11 @@ void CGarrisonSlot::clickLeft(tribool down, bool previousState)
 							}
 						}
 
+						int countLeft = owner->getSelection()->myStack ? owner->getSelection()->myStack->count : 0;
+						int countRight = myStack ? myStack->count : 0;
+
 						GH.pushInt(new CSplitWindow(owner->getSelection()->creature, boost::bind(&CGarrisonInt::splitStacks, owner, _1, _2),
-						                            minLeft, minRight, owner->getSelection()->myStack->count, myStack->count));
+						                            minLeft, minRight, countLeft, countRight));
 						refr = true;
 					}
 					else if(creature != owner->getSelection()->creature) //swap

+ 4 - 1
lib/CGameState.cpp

@@ -494,7 +494,10 @@ int CGameState::pickHero(int owner)
 	for (si32 i=firstHero; i<lastHero; i++)
 		factionHeroes.push_back(i);
 	// we need random order to select hero
-	std::random_shuffle(factionHeroes.begin(), factionHeroes.end());
+	std::random_shuffle(factionHeroes.begin(), factionHeroes.end(), [](size_t range)
+	{
+		return ran() % range;
+	});
 
 	for (size_t i=0; i<factionHeroes.size(); i++)
 	{