From 06a18da27be7a24f5583eb5c1c3ae16563200e5a Mon Sep 17 00:00:00 2001 From: John Date: Tue, 31 Oct 2017 21:07:09 +0800 Subject: [PATCH 1/3] [unity] Fix Repacking caching. --- .../Modules/AttachmentTools/AttachmentTools.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/spine-unity/Assets/spine-unity/Modules/AttachmentTools/AttachmentTools.cs b/spine-unity/Assets/spine-unity/Modules/AttachmentTools/AttachmentTools.cs index a989a9203..6a7934333 100644 --- a/spine-unity/Assets/spine-unity/Modules/AttachmentTools/AttachmentTools.cs +++ b/spine-unity/Assets/spine-unity/Modules/AttachmentTools/AttachmentTools.cs @@ -399,7 +399,7 @@ namespace Spine.Unity.Modules.AttachmentTools { /// The List(Attachment) to populate with the newly created Attachment objects. /// /// May be null. If no Material property source is provided, no special - public static void GetRepackedAttachments (List sourceAttachments, List outputAttachments, Material materialPropertySource, out Material outputMaterial, out Texture2D outputTexture, int maxAtlasSize = 1024, int padding = 2, TextureFormat textureFormat = SpineTextureFormat, bool mipmaps = UseMipMaps, string newAssetName = "Repacked Attachments") { + public static void GetRepackedAttachments (List sourceAttachments, List outputAttachments, Material materialPropertySource, out Material outputMaterial, out Texture2D outputTexture, int maxAtlasSize = 1024, int padding = 2, TextureFormat textureFormat = SpineTextureFormat, bool mipmaps = UseMipMaps, string newAssetName = "Repacked Attachments", bool clearCache = false) { if (sourceAttachments == null) throw new System.ArgumentNullException("sourceAttachments"); if (outputAttachments == null) throw new System.ArgumentNullException("outputAttachments"); @@ -468,8 +468,8 @@ namespace Spine.Unity.Modules.AttachmentTools { } // Clean up. - foreach (var ttp in texturesToPack) - UnityEngine.Object.Destroy(ttp); + if (clearCache) + AtlasUtilities.ClearCache(); outputTexture = newTexture; outputMaterial = newMaterial; @@ -485,7 +485,7 @@ namespace Spine.Unity.Modules.AttachmentTools { /// /// Creates and populates a duplicate skin with cloned attachments that are backed by a new packed texture atlas comprised of all the regions from the original skin. /// No Spine.Atlas object is created so there is no way to find AtlasRegions except through the Attachments using them. - public static Skin GetRepackedSkin (this Skin o, string newName, Shader shader, out Material outputMaterial, out Texture2D outputTexture, int maxAtlasSize = 1024, int padding = 2, TextureFormat textureFormat = SpineTextureFormat, bool mipmaps = UseMipMaps, Material materialPropertySource = null) { + public static Skin GetRepackedSkin (this Skin o, string newName, Shader shader, out Material outputMaterial, out Texture2D outputTexture, int maxAtlasSize = 1024, int padding = 2, TextureFormat textureFormat = SpineTextureFormat, bool mipmaps = UseMipMaps, Material materialPropertySource = null, bool clearCache = false) { var skinAttachments = o.Attachments; var newSkin = new Skin(newName); @@ -553,8 +553,8 @@ namespace Spine.Unity.Modules.AttachmentTools { } // Clean up. - foreach (var ttp in texturesToPack) - UnityEngine.Object.Destroy(ttp); + if (clearCache) + AtlasUtilities.ClearCache(); outputTexture = newTexture; outputMaterial = newMaterial; From 095fe71ff8e8fda6752db179e78535c8bf0329e6 Mon Sep 17 00:00:00 2001 From: badlogic Date: Thu, 2 Nov 2017 10:51:26 +0100 Subject: [PATCH 2/3] [cocos2dx] Updated to cocos2d-x 3.16. --- spine-cocos2dx/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-cocos2dx/CMakeLists.txt b/spine-cocos2dx/CMakeLists.txt index 55886d048..028103e07 100644 --- a/spine-cocos2dx/CMakeLists.txt +++ b/spine-cocos2dx/CMakeLists.txt @@ -2,14 +2,14 @@ cmake_minimum_required(VERSION 2.8) set(EXAMPLE_DIR "${CMAKE_CURRENT_LIST_DIR}/example") if (NOT EXISTS ${EXAMPLE_DIR}/cocos2d) message("Downloading cocos2dx, this may take some time!") - file(DOWNLOAD "http://www.cocos2d-x.org/filedown/start/364" "${EXAMPLE_DIR}/cocos2dx.zip") + file(DOWNLOAD "http://cdn.cocos2d-x.org/cocos2d-x-3.16.zip" "${EXAMPLE_DIR}/cocos2dx.zip") execute_process( COMMAND ${CMAKE_COMMAND} -E tar x ${EXAMPLE_DIR}/cocos2dx.zip WORKING_DIRECTORY ${EXAMPLE_DIR} ) execute_process( COMMAND ${CMAKE_COMMAND} -E rename - "${EXAMPLE_DIR}/cocos2d-x-3.14.1" "${EXAMPLE_DIR}/cocos2d" + "${EXAMPLE_DIR}/cocos2d-x-3.16" "${EXAMPLE_DIR}/cocos2d" ) execute_process( COMMAND ${CMAKE_COMMAND} -E remove_directory "${EXAMPLE_DIR}/cocos2d/cocos/editor-support/spine" From 361378b2750841955e0643d66594abe46d81e90d Mon Sep 17 00:00:00 2001 From: badlogic Date: Thu, 2 Nov 2017 11:20:57 +0100 Subject: [PATCH 3/3] [c] Error in color parsing, off-by-one resulting in invalid memory access. Closes #1031. Thanks @minggo for the adress sanitizer hint. --- spine-c/spine-c/src/spine/SkeletonJson.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spine-c/spine-c/src/spine/SkeletonJson.c b/spine-c/spine-c/src/spine/SkeletonJson.c index 48322bad5..b67e94bdf 100644 --- a/spine-c/spine-c/src/spine/SkeletonJson.c +++ b/spine-c/spine-c/src/spine/SkeletonJson.c @@ -93,7 +93,8 @@ static float toColor (const char* value, int index) { char *error; int color; - if (strlen(value) / 2 < index) return -1; + if (index >= strlen(value) / 2) + return -1; value += index * 2; digits[0] = *value;