diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.cc index c689c75430..c9a4906b18 100644 --- a/Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.cc +++ b/Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.cc @@ -344,9 +344,14 @@ bool JumpValuesRangeDefault::contains(uintb val) const bool JumpValuesRangeDefault::initializeForReading(void) const { - if (range.getSize()==0) return false; - curval = range.getMin(); - lastvalue = false; + if (range.getSize()==0) { + curval = extravalue; + lastvalue = true; + } + else { + curval = range.getMin(); + lastvalue = false; + } return true; } diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.hh b/Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.hh index cd9acf2c97..fe3de7cbd1 100644 --- a/Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.hh +++ b/Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.hh @@ -219,7 +219,7 @@ class JumpValuesRangeDefault : public JumpValuesRange { uintb extravalue; ///< The extra value Varnode *extravn; ///< The starting Varnode 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: void setExtraValue(uintb val) { extravalue = val; } ///< Set the extra value explicitly void setDefaultVn(Varnode *vn) { extravn = vn; } ///< Set the associated start Varnode