Work around MSVC bug 746973.
MSVC has a long history of value initialization bugs, and this one is no exception. In this case, when some MSVC versions (at least up to 2013) are instructed to value-initialize a non-POD class with a compiler generated non-trivial constructor, it does not zero out the POD members.
This commit is contained in:
parent
9f2077b1f3
commit
43a59e212f
@ -181,7 +181,8 @@ public:
|
|||||||
std::weak_ptr<const Pixmap> texture;
|
std::weak_ptr<const Pixmap> texture;
|
||||||
} current;
|
} current;
|
||||||
|
|
||||||
OpenGl1Renderer() : camera(), lighting(), current() {}
|
// List-initialize current to work around MSVC bug 746973.
|
||||||
|
OpenGl1Renderer() : camera(), lighting(), current({}) {}
|
||||||
|
|
||||||
const Camera &GetCamera() const override { return camera; }
|
const Camera &GetCamera() const override { return camera; }
|
||||||
|
|
||||||
|
@ -88,11 +88,12 @@ public:
|
|||||||
std::weak_ptr<const Pixmap> texture;
|
std::weak_ptr<const Pixmap> texture;
|
||||||
} current;
|
} current;
|
||||||
|
|
||||||
|
// List-initialize current to work around MSVC bug 746973.
|
||||||
OpenGl3Renderer() :
|
OpenGl3Renderer() :
|
||||||
lines(), meshes(), points(), pixmapCache(), masks(),
|
lines(), meshes(), points(), pixmapCache(), masks(),
|
||||||
initialized(), atlas(), meshRenderer(), imeshRenderer(),
|
initialized(), atlas(), meshRenderer(), imeshRenderer(),
|
||||||
edgeRenderer(), outlineRenderer(), camera(), lighting(),
|
edgeRenderer(), outlineRenderer(), camera(), lighting(),
|
||||||
current() {}
|
current({}) {}
|
||||||
|
|
||||||
void Init();
|
void Init();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user