mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-05 18:26:52 +08:00
[unity] Added using and finally-dispose guards around all stream instances, see #1260.
This commit is contained in:
parent
065c13f498
commit
68eeed67b8
@ -514,17 +514,24 @@ namespace Spine.Unity.Editor {
|
|||||||
|
|
||||||
TextReader reader = null;
|
TextReader reader = null;
|
||||||
TextAsset spineJson = AssetDatabase.LoadAssetAtPath<TextAsset>(skeletonDataPath);
|
TextAsset spineJson = AssetDatabase.LoadAssetAtPath<TextAsset>(skeletonDataPath);
|
||||||
if (spineJson != null) {
|
Dictionary<string, object> root = null;
|
||||||
reader = new StringReader(spineJson.text);
|
try {
|
||||||
|
if (spineJson != null) {
|
||||||
|
reader = new StringReader(spineJson.text);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// On a "Reimport All" the order of imports can be wrong, thus LoadAssetAtPath() above could return null.
|
||||||
|
// as a workaround, we provide a fallback reader.
|
||||||
|
reader = new StreamReader(skeletonDataPath);
|
||||||
|
}
|
||||||
|
root = Json.Deserialize(reader) as Dictionary<string, object>;
|
||||||
}
|
}
|
||||||
else {
|
finally {
|
||||||
// On a "Reimport All" the order of imports can be wrong, thus LoadAssetAtPath() above could return null.
|
if (reader != null)
|
||||||
// as a workaround, we provide a fallback reader.
|
reader.Dispose();
|
||||||
reader = new StreamReader(skeletonDataPath);
|
|
||||||
}
|
}
|
||||||
var root = Json.Deserialize(reader) as Dictionary<string, object>;
|
|
||||||
|
|
||||||
if (!root.ContainsKey("skins"))
|
if (root == null || !root.ContainsKey("skins"))
|
||||||
return requiredPaths;
|
return requiredPaths;
|
||||||
|
|
||||||
foreach (var skin in (Dictionary<string, object>)root["skins"]) {
|
foreach (var skin in (Dictionary<string, object>)root["skins"]) {
|
||||||
@ -566,15 +573,21 @@ namespace Spine.Unity.Editor {
|
|||||||
SkeletonBinary binary = new SkeletonBinary(new AtlasRequirementLoader(requiredPaths));
|
SkeletonBinary binary = new SkeletonBinary(new AtlasRequirementLoader(requiredPaths));
|
||||||
Stream input = null;
|
Stream input = null;
|
||||||
TextAsset data = AssetDatabase.LoadAssetAtPath<TextAsset>(skeletonDataPath);
|
TextAsset data = AssetDatabase.LoadAssetAtPath<TextAsset>(skeletonDataPath);
|
||||||
if (data == null) {
|
try {
|
||||||
// On a "Reimport All" the order of imports can be wrong, thus LoadAssetAtPath() above could return null.
|
if (data != null) {
|
||||||
// as a workaround, we provide a fallback reader.
|
input = new MemoryStream(data.bytes);
|
||||||
input = File.Open(skeletonDataPath, FileMode.Open, FileAccess.Read);
|
}
|
||||||
|
else {
|
||||||
|
// On a "Reimport All" the order of imports can be wrong, thus LoadAssetAtPath() above could return null.
|
||||||
|
// as a workaround, we provide a fallback reader.
|
||||||
|
input = File.Open(skeletonDataPath, FileMode.Open, FileAccess.Read);
|
||||||
|
}
|
||||||
|
binary.ReadSkeletonData(input);
|
||||||
}
|
}
|
||||||
else {
|
finally {
|
||||||
input = new MemoryStream(data.bytes);
|
if (input != null)
|
||||||
|
input.Dispose();
|
||||||
}
|
}
|
||||||
binary.ReadSkeletonData(input);
|
|
||||||
binary = null;
|
binary = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1000,7 +1013,9 @@ namespace Spine.Unity.Editor {
|
|||||||
int[][] compatibleVersions;
|
int[][] compatibleVersions;
|
||||||
if (asset.name.Contains(".skel")) {
|
if (asset.name.Contains(".skel")) {
|
||||||
try {
|
try {
|
||||||
rawVersion = SkeletonBinary.GetVersionString(new MemoryStream(asset.bytes));
|
using (var memStream = new MemoryStream(asset.bytes)) {
|
||||||
|
rawVersion = SkeletonBinary.GetVersionString(memStream);
|
||||||
|
}
|
||||||
isSpineData = !(string.IsNullOrEmpty(rawVersion));
|
isSpineData = !(string.IsNullOrEmpty(rawVersion));
|
||||||
compatibleVersions = compatibleBinaryVersions;
|
compatibleVersions = compatibleBinaryVersions;
|
||||||
} catch (System.Exception e) {
|
} catch (System.Exception e) {
|
||||||
|
|||||||
@ -219,11 +219,12 @@ namespace Spine.Unity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal static SkeletonData ReadSkeletonData (byte[] bytes, AttachmentLoader attachmentLoader, float scale) {
|
internal static SkeletonData ReadSkeletonData (byte[] bytes, AttachmentLoader attachmentLoader, float scale) {
|
||||||
var input = new MemoryStream(bytes);
|
using (var input = new MemoryStream(bytes)) {
|
||||||
var binary = new SkeletonBinary(attachmentLoader) {
|
var binary = new SkeletonBinary(attachmentLoader) {
|
||||||
Scale = scale
|
Scale = scale
|
||||||
};
|
};
|
||||||
return binary.ReadSkeletonData(input);
|
return binary.ReadSkeletonData(input);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static SkeletonData ReadSkeletonData (string text, AttachmentLoader attachmentLoader, float scale) {
|
internal static SkeletonData ReadSkeletonData (string text, AttachmentLoader attachmentLoader, float scale) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user