Index: client/Client/main.cpp
===================================================================
--- client/Client/main.cpp	(revision e103b514166f9254e737347ed964a1225a5bfb60)
+++ client/Client/main.cpp	(revision 453087eda856fa546fc787f879eec1b5866e887c)
@@ -743,16 +743,17 @@
                cout << "Received MSG_TYPE_PLAYER" << endl;
 
-               Player* p = new Player("", "");
-               p->deserialize(msg.buffer);
-               p->timeLastUpdated = getCurrentMillis();
-               p->isChasing = false;
-               if (p->health <= 0)
-                  p->isDead = true;
+               Player p("", "");
+               p.deserialize(msg.buffer);
+               p.timeLastUpdated = getCurrentMillis();
+               p.isChasing = false;
+               if (p.health <= 0)
+                  p.isDead = true;
                else
-                  p->isDead = false;
-
-               if (mapPlayers.find(p->id) != mapPlayers.end())
-                    delete mapPlayers[p->id];
-               mapPlayers[p->id] = p;
+                  p.isDead = false;
+
+               if (mapPlayers.find(p.id) != mapPlayers.end())
+                  *(mapPlayers[p.id]) = p;
+               else
+                  mapPlayers[p.id] = new Player(p);
 
                break;
@@ -947,18 +948,24 @@
                cout << "Received MSG_TYPE_PLAYER" << endl;
 
-               Player* p = new Player("", "");
-               p->deserialize(msg.buffer);
-               p->timeLastUpdated = getCurrentMillis();
-               p->isChasing = false;
-               if (p->health <= 0)
-                  p->isDead = true;
+               Player p("", "");
+               p.deserialize(msg.buffer);
+               p.timeLastUpdated = getCurrentMillis();
+               p.isChasing = false;
+               if (p.health <= 0)
+                  p.isDead = true;
                else
-                  p->isDead = false;
-
-               if (mapPlayers.find(p->id) != mapPlayers.end())
-                    delete mapPlayers[p->id];
-               mapPlayers[p->id] = p;
-
-               game->addPlayer(p);
+                  p.isDead = false;
+
+               if (mapPlayers.find(p.id) != mapPlayers.end())
+                  *(mapPlayers[p.id]) = p;
+               else
+                  mapPlayers[p.id] = new Player(p);
+
+               break;
+
+               // there's a problem here because PLAYER messages will be sent
+               // for players in this game as well as for new players logging in
+               // we might need two different message types
+               game->addPlayer(mapPlayers[p.id]);
 
                break;
