Skip to content

Commit 95144fe

Browse files
committed
Replace value checks with IsInvalidXXX calls.
1 parent 043d48f commit 95144fe

File tree

3 files changed

+46
-18
lines changed

3 files changed

+46
-18
lines changed

Visual_Studio_2017/GraphicalDebugging/ExpressionLoader.cs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -637,7 +637,7 @@ MemoryReader.Converter<double> arrayConverter
637637
if (byteSize == 0)
638638
return null;
639639
long byteOffset = ExpressionParser.GetAddressDifference(debugger, name, elemName);
640-
if (ExpressionParser.IsInvalidAddressDifference(byteOffset))
640+
if (ExpressionParser.IsInvalidOffset(byteSize, byteOffset))
641641
return null;
642642
return new MemoryReader.StructConverter<double>(byteSize,
643643
new MemoryReader.Member<double>(arrayConverter, (int)byteOffset));
@@ -834,16 +834,12 @@ public override MemoryReader.Converter<double> GetMemoryConverter(Loaders loader
834834
MemoryReader.Converter<double> pointConverter = pointLoader.GetMemoryConverter(loaders, mreader, debugger, m_min_corner, pointType);
835835

836836
int size = (new ExpressionParser(debugger)).GetValueSizeof(name);
837+
if (ExpressionParser.IsInvalidSize(size))
838+
return null;
839+
837840
long minDiff = ExpressionParser.GetAddressDifference(debugger, name, m_min_corner);
838841
long maxDiff = ExpressionParser.GetAddressDifference(debugger, name, m_max_corner);
839-
840-
if (size <= 0
841-
|| ExpressionParser.IsInvalidAddressDifference(minDiff)
842-
|| ExpressionParser.IsInvalidAddressDifference(maxDiff)
843-
|| minDiff < 0
844-
|| maxDiff < 0
845-
|| minDiff >= size
846-
|| maxDiff >= size)
842+
if (ExpressionParser.IsInvalidOffset(size, minDiff, maxDiff))
847843
return null;
848844

849845
return new MemoryReader.StructConverter<double>(size,

Visual_Studio_2017/GraphicalDebugging/ExpressionLoader_UserDefined.cs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,35 +43,33 @@ public override void Initialize(Debugger debugger, string name)
4343
exprY.Initialize(debugger, name, type);
4444

4545
sizeOf = ExpressionParser.GetTypeSizeof(debugger, type);
46-
if (sizeOf <= 0)
46+
if (ExpressionParser.IsInvalidSize(sizeOf))
47+
{
48+
sizeOf = 0;
4749
return;
50+
}
4851

4952
string nameX = exprX.GetString(name);
5053
string nameY = exprY.GetString(name);
5154
typeX = ExpressionParser.GetValueType(debugger, nameX);
5255
typeY = ExpressionParser.GetValueType(debugger, nameY);
53-
if (typeX == null || typeY == null)
56+
if (ExpressionParser.IsInvalidType(typeX, typeY))
5457
{
5558
sizeOf = 0;
5659
return;
5760
}
5861

5962
sizeX = ExpressionParser.GetTypeSizeof(debugger, typeX);
6063
sizeY = ExpressionParser.GetTypeSizeof(debugger, typeY);
61-
if (sizeX <= 0 || sizeY <= 0)
64+
if (ExpressionParser.IsInvalidSize(sizeX, sizeY))
6265
{
6366
sizeOf = 0;
6467
return;
6568
}
6669

6770
offsetX = ExpressionParser.GetAddressDifference(debugger, name, nameX);
6871
offsetY = ExpressionParser.GetAddressDifference(debugger, name, nameY);
69-
if (ExpressionParser.IsInvalidAddressDifference(offsetX)
70-
|| ExpressionParser.IsInvalidAddressDifference(offsetY)
71-
|| offsetX < 0
72-
|| offsetY < 0
73-
|| offsetX > sizeOf
74-
|| offsetY > sizeOf)
72+
if (ExpressionParser.IsInvalidOffset(sizeOf, offsetX, offsetY))
7573
// offsetX + sizeX > sizeOf
7674
// offsetY + sizeY > sizeOf
7775
{
@@ -145,6 +143,7 @@ protected MemoryReader.Converter<double> GetMemoryConverter(MemoryReader mreader
145143
string id;
146144
ClassScopeExpression exprX;
147145
ClassScopeExpression exprY;
146+
// For memory loading:
148147
string typeX;
149148
string typeY;
150149
long offsetX;

Visual_Studio_2017/GraphicalDebugging/ExpressionParser.cs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,39 @@ public static string GetValueType(Debugger debugger, string valName)
157157
: null;
158158
}
159159

160+
public static bool IsInvalidType(string type)
161+
{
162+
return type == null;
163+
}
164+
165+
public static bool IsInvalidType(string type1, string type2)
166+
{
167+
return type1 == null || type2 == null;
168+
}
169+
170+
public static bool IsInvalidSize(int size)
171+
{
172+
return size <= 0;
173+
}
174+
175+
public static bool IsInvalidSize(int size1, int size2)
176+
{
177+
return size1 <= 0 || size2 <= 0;
178+
}
179+
180+
public static bool IsInvalidOffset(long size, long offset)
181+
{
182+
return ExpressionParser.IsInvalidAddressDifference(offset)
183+
|| offset < 0
184+
|| offset >= size;
185+
}
186+
187+
public static bool IsInvalidOffset(long size, long offset1, long offset2)
188+
{
189+
return IsInvalidOffset(size, offset1)
190+
|| IsInvalidOffset(size, offset2);
191+
}
192+
160193
public ExpressionParser(Debugger debugger)
161194
{
162195
string language = debugger.CurrentStackFrame.Language;

0 commit comments

Comments
 (0)