浏览代码

[cpp] Closes #2773, infinite loop in spine_skin_get_entries and subsequent freeing of name strings.

Mario Zechner 4 月之前
父节点
当前提交
febbbbcd17
共有 1 个文件被更改,包括 4 次插入1 次删除
  1. 4 1
      spine-cpp/spine-cpp-lite/spine-cpp-lite.cpp

+ 4 - 1
spine-cpp/spine-cpp-lite/spine-cpp-lite.cpp

@@ -3007,7 +3007,10 @@ spine_skin_entries spine_skin_get_entries(spine_skin skin) {
 	_spine_skin_entries *entries = SpineExtension::getInstance()->calloc<_spine_skin_entries>(1, __FILE__, __LINE__);
 	_spine_skin_entries *entries = SpineExtension::getInstance()->calloc<_spine_skin_entries>(1, __FILE__, __LINE__);
 	{
 	{
 		Skin::AttachmentMap::Entries mapEntries = _skin->getAttachments();
 		Skin::AttachmentMap::Entries mapEntries = _skin->getAttachments();
-		while (mapEntries.hasNext()) entries->numEntries++;
+		while (mapEntries.hasNext()) {
+			entries->numEntries++;
+			mapEntries.next();
+		}
 	}
 	}
 	{
 	{
 		entries->entries = SpineExtension::getInstance()->calloc<_spine_skin_entry>(entries->numEntries, __FILE__, __LINE__);
 		entries->entries = SpineExtension::getInstance()->calloc<_spine_skin_entry>(entries->numEntries, __FILE__, __LINE__);