@joebigelow / wix-1 / commits / 9170d12e

Handle null path fields during Resolve

Also rename more "row" to "tuple"

Rob Mensching committed May 24, 2019 at 08:49 UTC 9170d12eed6fbb0af88963f71fdc661bdcecfd58
1 file changed +15 -15
src/WixToolset.Core/Bind/ResolveFieldsCommand.cs
+15 -15
@@ -36,17 +36,17 @@ namespace WixToolset.Core.Bind
36
37 public void Execute()
38 {
39 - List<DelayedField> delayedFields = this.SupportDelayedResolution ? new List<DelayedField>() : null;
39 + var delayedFields = this.SupportDelayedResolution ? new List<DelayedField>() : null;
40
41 var fileResolver = new FileResolver(this.BindPaths, this.Extensions);
42
43 foreach (var sections in this.Intermediate.Sections)
44 {
45 - foreach (var row in sections.Tuples)
45 + foreach (var tuple in sections.Tuples)
46 {
47 - foreach (var field in row.Fields)
47 + foreach (var field in tuple.Fields)
48 {
49 - if (field == null)
49 + if (field.IsNull())
50 {
51 continue;
52 }
@@ -62,7 +62,7 @@ namespace WixToolset.Core.Bind
62 var original = field.AsString();
63 if (!String.IsNullOrEmpty(original))
64 {
65 - var resolution = this.VariableResolver.ResolveVariables(row.SourceLineNumbers, original, false);
65 + var resolution = this.VariableResolver.ResolveVariables(tuple.SourceLineNumbers, original, false);
66 if (resolution.UpdatedValue)
67 {
68 field.Set(resolution.Value);
@@ -70,7 +70,7 @@ namespace WixToolset.Core.Bind
70
71 if (resolution.DelayedResolve)
72 {
73 - delayedFields.Add(new DelayedField(row, field));
73 + delayedFields.Add(new DelayedField(tuple, field));
74 }
75
76 isDefault = resolution.IsDefault;
@@ -78,7 +78,7 @@ namespace WixToolset.Core.Bind
78 }
79 }
80
81 - // Move to next row if we've hit an error resolving variables.
81 + // Move to next tuple if we've hit an error resolving variables.
82 if (this.Messaging.EncounteredError) // TODO: make this error handling more specific to just the failure to resolve variables in this field.
83 {
84 continue;
@@ -91,7 +91,7 @@ namespace WixToolset.Core.Bind
91
92 #if REVISIT_FOR_PATCHING
93 // Skip file resolution if the file is to be deleted.
94 - if (RowOperation.Delete == row.Operation)
94 + if (RowOperation.Delete == tuple.Operation)
95 {
96 continue;
97 }
@@ -120,13 +120,13 @@ namespace WixToolset.Core.Bind
120 #endif
121
122 // resolve the path to the file
123 - var value = fileResolver.ResolveFile(objectField.Path, row.Definition, row.SourceLineNumbers, BindStage.Normal);
123 + var value = fileResolver.ResolveFile(objectField.Path, tuple.Definition, tuple.SourceLineNumbers, BindStage.Normal);
124 field.Set(value);
125 }
126 else if (!fileResolver.RebaseTarget && !fileResolver.RebaseUpdated) // Normal binding for Patch Scenario (normal patch, no re-basing logic)
127 {
128 // resolve the path to the file
129 - var value = fileResolver.ResolveFile(objectField.Path, row.Definition, row.SourceLineNumbers, BindStage.Normal);
129 + var value = fileResolver.ResolveFile(objectField.Path, tuple.Definition, tuple.SourceLineNumbers, BindStage.Normal);
130 field.Set(value);
131 }
132 #if REVISIT_FOR_PATCHING
@@ -148,7 +148,7 @@ namespace WixToolset.Core.Bind
148 }
149 }
150
151 - objectField.Data = fileResolver.ResolveFile(filePathToResolve, row.Definition.Name, row.SourceLineNumbers, BindStage.Updated);
151 + objectField.Data = fileResolver.ResolveFile(filePathToResolve, tuple.Definition.Name, tuple.SourceLineNumbers, BindStage.Updated);
152 }
153 #endif
154 }
@@ -161,7 +161,7 @@ namespace WixToolset.Core.Bind
161 #if REVISIT_FOR_PATCHING
162 if (null != objectField.PreviousData)
163 {
164 - objectField.PreviousData = this.BindVariableResolver.ResolveVariables(row.SourceLineNumbers, objectField.PreviousData, false, out isDefault);
164 + objectField.PreviousData = this.BindVariableResolver.ResolveVariables(tuple.SourceLineNumbers, objectField.PreviousData, false, out isDefault);
165
166 if (!Messaging.Instance.EncounteredError) // TODO: make this error handling more specific to just the failure to resolve variables in this field.
167 {
@@ -186,7 +186,7 @@ namespace WixToolset.Core.Bind
186 if (!fileResolver.RebaseTarget && !fileResolver.RebaseUpdated)
187 {
188 // resolve the path to the file
189 - objectField.PreviousData = fileResolver.ResolveFile((string)objectField.PreviousData, row.Definition.Name, row.SourceLineNumbers, BindStage.Normal);
189 + objectField.PreviousData = fileResolver.ResolveFile((string)objectField.PreviousData, tuple.Definition.Name, tuple.SourceLineNumbers, BindStage.Normal);
190 }
191 else
192 {
@@ -204,14 +204,14 @@ namespace WixToolset.Core.Bind
204 }
205
206 // resolve the path to the file
207 - objectField.PreviousData = fileResolver.ResolveFile((string)objectField.PreviousData, row.Definition.Name, row.SourceLineNumbers, BindStage.Target);
207 + objectField.PreviousData = fileResolver.ResolveFile((string)objectField.PreviousData, tuple.Definition.Name, tuple.SourceLineNumbers, BindStage.Target);
208
209 }
210 }
211 catch (WixFileNotFoundException)
212 {
213 // display the error with source line information
214 - Messaging.Instance.Write(WixErrors.FileNotFound(row.SourceLineNumbers, (string)objectField.PreviousData));
214 + Messaging.Instance.Write(WixErrors.FileNotFound(tuple.SourceLineNumbers, (string)objectField.PreviousData));
215 }
216 }
217 }