From cfff020bc0f2db3e1e7eeef862d28b7d0b47eebe Mon Sep 17 00:00:00 2001 From: Valeriy Mironov Date: Tue, 1 May 2018 00:54:51 +0300 Subject: [PATCH] Skipped storing empty paramter lists. It was possible to brick watches with this :( --- WatchFace.Parser/Utils/ParametersConverter.cs | 6 +++++- WatchFace.Parser/Writer.cs | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/WatchFace.Parser/Utils/ParametersConverter.cs b/WatchFace.Parser/Utils/ParametersConverter.cs index 91f83a1..c09a607 100644 --- a/WatchFace.Parser/Utils/ParametersConverter.cs +++ b/WatchFace.Parser/Utils/ParametersConverter.cs @@ -56,7 +56,11 @@ namespace WatchFace.Parser.Utils } else { - result.Add(new Parameter(id, Build(propertyValue, currentPath))); + var innerParameters = Build(propertyValue, currentPath); + if (innerParameters.Count > 0) + result.Add(new Parameter(id, innerParameters)); + else + Logger.Trace("{0} '{1}': Skipped because of empty", currentPath, propertyInfo.Name); } } diff --git a/WatchFace.Parser/Writer.cs b/WatchFace.Parser/Writer.cs index 2d3539e..a06e6dd 100644 --- a/WatchFace.Parser/Writer.cs +++ b/WatchFace.Parser/Writer.cs @@ -25,6 +25,7 @@ namespace WatchFace.Parser var encodedParameters = new Dictionary(descriptor.Count); foreach (var parameter in descriptor) { + Logger.Trace("Parameter: {0}", parameter.Id); var memoryStream = new MemoryStream(); foreach (var child in parameter.Children) child.Write(memoryStream);