fix getSubField() by index

This commit is contained in:
Michael Davidsaver
2017-08-16 16:29:06 +02:00
parent 78b51ebe59
commit 0b262baf97
2 changed files with 73 additions and 15 deletions

View File

@@ -89,7 +89,8 @@ PVFieldPtr PVStructure::getSubFieldImpl(size_t fieldOffset, bool throws) const
const PVStructure *current = this;
recurse:
if(fieldOffset<=current->getFieldOffset() || fieldOffset>current->getNextFieldOffset()) {
// we don't permit self lookup
if(fieldOffset<=current->getFieldOffset() || fieldOffset>=current->getNextFieldOffset()) {
if(throws) {
std::stringstream ss;
ss << "Failed to get field with offset "
@@ -104,7 +105,7 @@ recurse:
const PVFieldPtr& pvField = current->pvFields[i];
if(pvField->getFieldOffset()==fieldOffset) {
return pvFields[i];
return pvField;
} else if(pvField->getNextFieldOffset()<=fieldOffset) {
continue;