diff --git a/packages/micropolis-engine/src/micropolis.h b/packages/micropolis-engine/src/micropolis.h index 60141c35..676f84e2 100644 --- a/packages/micropolis-engine/src/micropolis.h +++ b/packages/micropolis-engine/src/micropolis.h @@ -968,7 +968,7 @@ class Micropolis { /** * Callback interface. */ - Callback *callback; + Callback *callback = NULL; /** @@ -1411,8 +1411,8 @@ class Micropolis { /** * Memory for map array. */ - unsigned short *mapBase; - unsigned short *mopBase; + unsigned short *mapBase = NULL; + unsigned short *mopBase = NULL; void initMapArrays(); diff --git a/packages/micropolis-engine/src/sprite.cpp b/packages/micropolis-engine/src/sprite.cpp index 5cab2c8f..2eeb884e 100644 --- a/packages/micropolis-engine/src/sprite.cpp +++ b/packages/micropolis-engine/src/sprite.cpp @@ -77,6 +77,8 @@ //////////////////////////////////////////////////////////////////////// +#include + #include "micropolis.h" #include "text.h" @@ -112,6 +114,8 @@ SimSprite *Micropolis::newSprite(const std::string &name, int type, int x, int y freeSprites = sprite->next; } else { sprite = (SimSprite *)newPtr(sizeof (SimSprite)); + // newPtr is malloc, so construct the object in place. + new (sprite) SimSprite(); } sprite->name = name;