diff --git a/spine-cpp/includes/spine-sfml/Atlas.h b/spine-cpp/includes/spine-sfml/Atlas.h index 25fbc2d77..14417152f 100644 --- a/spine-cpp/includes/spine-sfml/Atlas.h +++ b/spine-cpp/includes/spine-sfml/Atlas.h @@ -8,6 +8,10 @@ namespace spine { class AtlasPage: public BaseAtlasPage { public: + ~AtlasPage(){ + delete texture; + } + sf::Texture *texture; }; diff --git a/spine-cpp/src/spine-sfml/Skeleton.cpp b/spine-cpp/src/spine-sfml/Skeleton.cpp index 69be90e27..52b7c9393 100644 --- a/spine-cpp/src/spine-sfml/Skeleton.cpp +++ b/spine-cpp/src/spine-sfml/Skeleton.cpp @@ -23,7 +23,8 @@ void Skeleton::draw (RenderTarget& target, RenderStates states) const { const_cast(this)->vertexArray.clear(); for (int i = 0, n = slots.size(); i < n; i++) if (slots[i]->attachment) slots[i]->attachment->draw(slots[i]); - target.draw(vertexArray, texture); + states.texture = texture; + target.draw(vertexArray, states); } } /* namespace spine */ diff --git a/spine-cpp/src/spine/BaseAtlas.cpp b/spine-cpp/src/spine/BaseAtlas.cpp index 2d25a9b80..60fa24655 100644 --- a/spine-cpp/src/spine/BaseAtlas.cpp +++ b/spine-cpp/src/spine/BaseAtlas.cpp @@ -105,7 +105,7 @@ void BaseAtlas::load (const char *current, const char *end) { string value; string tuple[4]; - BaseAtlasPage *page; + BaseAtlasPage *page = NULL; while (current != end) { readLine(current, end, value); trim(value); diff --git a/spine-cpp/src/spine/BaseSkeletonJson.cpp b/spine-cpp/src/spine/BaseSkeletonJson.cpp index fa42ce0a0..f5ea292f0 100644 --- a/spine-cpp/src/spine/BaseSkeletonJson.cpp +++ b/spine-cpp/src/spine/BaseSkeletonJson.cpp @@ -21,8 +21,9 @@ namespace spine { static float toColor (const string &value, int index) { if (value.size() != 8) throw runtime_error("Error parsing color, length must be 8: " + value); char *p; - int color = strtoul(value.substr(index * 2, 2).c_str(), &p, 16); - if (*p != 0) throw runtime_error("Error parsing color: " + value + ", invalid hex value: " + value.substr(index * 2, 2)); + string tmp = value.substr(index * 2, 2); + int color = strtoul(tmp.c_str(), &p, 16); + if (*p != 0) throw runtime_error("Error parsing color: " + value + ", invalid hex value: " + tmp); return color / (float)255; }