GP-3292 Fix initializeForReading in case where there is only 1 value

This commit is contained in:
caheckman 2023-04-06 20:10:46 -04:00
parent ca9a56b5f4
commit e02c600234
2 changed files with 9 additions and 4 deletions

View file

@ -341,9 +341,14 @@ bool JumpValuesRangeDefault::contains(uintb val) const
bool JumpValuesRangeDefault::initializeForReading(void) const bool JumpValuesRangeDefault::initializeForReading(void) const
{ {
if (range.getSize()==0) return false; if (range.getSize()==0) {
curval = range.getMin(); curval = extravalue;
lastvalue = false; lastvalue = true;
}
else {
curval = range.getMin();
lastvalue = false;
}
return true; return true;
} }

View file

@ -217,7 +217,7 @@ class JumpValuesRangeDefault : public JumpValuesRange {
uintb extravalue; ///< The extra value uintb extravalue; ///< The extra value
Varnode *extravn; ///< The starting Varnode associated with the extra value Varnode *extravn; ///< The starting Varnode associated with the extra value
PcodeOp *extraop; ///< The starting PcodeOp associated with the extra value PcodeOp *extraop; ///< The starting PcodeOp associated with the extra value
mutable bool lastvalue; ///< \b true is the extra value has been visited by the iterator mutable bool lastvalue; ///< \b true if the extra value has been visited by the iterator
public: public:
void setExtraValue(uintb val) { extravalue = val; } ///< Set the extra value explicitly void setExtraValue(uintb val) { extravalue = val; } ///< Set the extra value explicitly
void setDefaultVn(Varnode *vn) { extravn = vn; } ///< Set the associated start Varnode void setDefaultVn(Varnode *vn) { extravn = vn; } ///< Set the associated start Varnode