From bb8cba13e1f1df95ff943e90f31997b739575f2d Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Tue, 6 Aug 2019 16:38:29 +0200 Subject: [PATCH] [libgdx] SkeletonBinary should only set a default skin if it has attachments. --- .../esotericsoftware/spine/SkeletonBinary.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java index 63eeb9473..6353991ff 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java @@ -328,12 +328,18 @@ public class SkeletonBinary { return skeletonData; } + /** @return May be null. */ private Skin readSkin (SkeletonInput input, SkeletonData skeletonData, boolean defaultSkin, boolean nonessential) throws IOException { - Skin skin = new Skin(defaultSkin ? "default" : input.readStringRef()); - - if (!defaultSkin) { + Skin skin; + int slotCount; + if (defaultSkin) { + slotCount = input.readInt(true); + if (slotCount == 0) return null; + skin = new Skin("default"); + } else { + skin = new Skin(input.readStringRef()); Object[] bones = skin.bones.setSize(input.readInt(true)); for (int i = 0, n = skin.bones.size; i < n; i++) bones[i] = skeletonData.bones.get(input.readInt(true)); @@ -345,9 +351,11 @@ public class SkeletonBinary { for (int i = 0, n = input.readInt(true); i < n; i++) skin.constraints.add(skeletonData.pathConstraints.get(input.readInt(true))); skin.constraints.shrink(); + + slotCount = input.readInt(true); } - for (int i = 0, n = input.readInt(true); i < n; i++) { + for (int i = 0, n = slotCount; i < n; i++) { int slotIndex = input.readInt(true); for (int ii = 0, nn = input.readInt(true); ii < nn; ii++) { String name = input.readStringRef();