diff options
| author | Rob Mensching <rob@firegiant.com> | 2017-12-06 11:21:42 -0800 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2017-12-06 11:21:42 -0800 |
| commit | ca376995792d2e2a1a7f39760989496702a8f603 (patch) | |
| tree | d9d2f35647d8fe77a91a63740d0ad267c32547b2 /src/WixToolset.Data/IntermediateFieldExtensions.cs | |
| parent | 53e877183abe0dbbb623c39380101bc369e9f265 (diff) | |
| download | wix-ca376995792d2e2a1a7f39760989496702a8f603.tar.gz wix-ca376995792d2e2a1a7f39760989496702a8f603.tar.bz2 wix-ca376995792d2e2a1a7f39760989496702a8f603.zip | |
Fix handling of long values and baseUri in path fields
Diffstat (limited to 'src/WixToolset.Data/IntermediateFieldExtensions.cs')
| -rw-r--r-- | src/WixToolset.Data/IntermediateFieldExtensions.cs | 53 |
1 files changed, 34 insertions, 19 deletions
diff --git a/src/WixToolset.Data/IntermediateFieldExtensions.cs b/src/WixToolset.Data/IntermediateFieldExtensions.cs index be225452..89a6b903 100644 --- a/src/WixToolset.Data/IntermediateFieldExtensions.cs +++ b/src/WixToolset.Data/IntermediateFieldExtensions.cs | |||
| @@ -21,26 +21,15 @@ namespace WixToolset.Data | |||
| 21 | { | 21 | { |
| 22 | // Null is always allowed. | 22 | // Null is always allowed. |
| 23 | } | 23 | } |
| 24 | else if (field.Type == IntermediateFieldType.Bool && !(value is bool)) | 24 | else if (field.Type == IntermediateFieldType.String && !(value is string)) |
| 25 | { | 25 | { |
| 26 | if (value is int) | 26 | if (value is int) |
| 27 | { | 27 | { |
| 28 | data = ((int)value) != 0; | 28 | data = value.ToString(); |
| 29 | } | 29 | } |
| 30 | else if (value is string str) | 30 | else if (value is bool b) |
| 31 | { | 31 | { |
| 32 | if (str.Equals("yes", StringComparison.OrdinalIgnoreCase) || str.Equals("true", StringComparison.OrdinalIgnoreCase)) | 32 | data = b ? "true" : "false"; |
| 33 | { | ||
| 34 | data = true; | ||
| 35 | } | ||
| 36 | else if (str.Equals("no", StringComparison.OrdinalIgnoreCase) || str.Equals("false", StringComparison.OrdinalIgnoreCase)) | ||
| 37 | { | ||
| 38 | data = false; | ||
| 39 | } | ||
| 40 | else | ||
| 41 | { | ||
| 42 | throw new ArgumentException(nameof(value)); | ||
| 43 | } | ||
| 44 | } | 33 | } |
| 45 | else | 34 | else |
| 46 | { | 35 | { |
| @@ -58,15 +47,26 @@ namespace WixToolset.Data | |||
| 58 | throw new ArgumentException(nameof(value)); | 47 | throw new ArgumentException(nameof(value)); |
| 59 | } | 48 | } |
| 60 | } | 49 | } |
| 61 | else if (field.Type == IntermediateFieldType.String && !(value is string)) | 50 | else if (field.Type == IntermediateFieldType.Bool && !(value is bool)) |
| 62 | { | 51 | { |
| 63 | if (value is int) | 52 | if (value is int) |
| 64 | { | 53 | { |
| 65 | data = value.ToString(); | 54 | data = ((int)value) != 0; |
| 66 | } | 55 | } |
| 67 | else if (value is bool b) | 56 | else if (value is string str) |
| 68 | { | 57 | { |
| 69 | data = b ? "true" : "false"; | 58 | if (str.Equals("yes", StringComparison.OrdinalIgnoreCase) || str.Equals("true", StringComparison.OrdinalIgnoreCase)) |
| 59 | { | ||
| 60 | data = true; | ||
| 61 | } | ||
| 62 | else if (str.Equals("no", StringComparison.OrdinalIgnoreCase) || str.Equals("false", StringComparison.OrdinalIgnoreCase)) | ||
| 63 | { | ||
| 64 | data = false; | ||
| 65 | } | ||
| 66 | else | ||
| 67 | { | ||
| 68 | throw new ArgumentException(nameof(value)); | ||
| 69 | } | ||
| 70 | } | 70 | } |
| 71 | else | 71 | else |
| 72 | { | 72 | { |
| @@ -84,6 +84,21 @@ namespace WixToolset.Data | |||
| 84 | throw new ArgumentException(nameof(value)); | 84 | throw new ArgumentException(nameof(value)); |
| 85 | } | 85 | } |
| 86 | } | 86 | } |
| 87 | else if (field.Type == IntermediateFieldType.LargeNumber && !(value is long)) | ||
| 88 | { | ||
| 89 | if (value is string str && Int64.TryParse(str, out var number)) | ||
| 90 | { | ||
| 91 | data = number; | ||
| 92 | } | ||
| 93 | else if (value is int i) | ||
| 94 | { | ||
| 95 | data = (long)i; | ||
| 96 | } | ||
| 97 | else | ||
| 98 | { | ||
| 99 | throw new ArgumentException(nameof(value)); | ||
| 100 | } | ||
| 101 | } | ||
| 87 | 102 | ||
| 88 | field.Value = new IntermediateFieldValue | 103 | field.Value = new IntermediateFieldValue |
| 89 | { | 104 | { |
