Troy, In VerseKey::checkBounds() void VerseKey::checkBounds() { long i = getIndex();
initBounds(); if (i > upperBound) { setIndex(upperBound); i = getIndex(); error = KEYERR_OUTOFBOUNDS; } if (i < lowerBound) { setIndex(lowerBound); error = KEYERR_OUTOFBOUNDS; } } i, upperBound and lowerBound are all -1, when working with a chapter that is not in the book. This is good. The proc getIndex() can’t compute the index since the chapter is not known so it rightfully returns -1. I think there should be a check in here like there is in VerseKey.setIndex(int iindex). So void VerseKey::checkBounds() { long i = getIndex(); // assert we're sane if (i < 0) { error = KEYERR_OUTOFBOUNDS; return; } initBounds(); if (i > upperBound) { setIndex(upperBound); i = getIndex(); error = KEYERR_OUTOFBOUNDS; } if (i < lowerBound) { setIndex(lowerBound); error = KEYERR_OUTOFBOUNDS; } } What do you think? DM > On Jun 15, 2025, at 8:11 AM, DM Smith <dmsm...@crosswire.org> wrote: > > Troy, > > I’ve narrowed it down to turning Auto Normalize off. > > In examples/cmdline/parseverselist.cpp, add parser.setAutoNormalize(false) to > see the error with Gen.51.1. Note Gen.50.99 (last chapter with bad verse > number) works. > > DM > >> On Jun 12, 2025, at 7:03 PM, DM Smith <dmsm...@crosswire.org> wrote: >> >> Troy, >> >> I’m working on an infinite loop bug in osis2mod. >> >> I’ve narrowed it down to ListKey containing a verse with a chapter which is >> beyond the end of a book. >> >> When this happens list.increment(1) never sets an error. >> >> Simplest test case (bit incomplete): >> >> int i = 0; >> ListKey list = new ListKey(); >> list.add(“Gen.51.1”); >> for (list = TOP; !list.popError(); list.increment(1)) { >> if (i++ > 5) break; >> cout << i << list << endl; >> } >> >> If I change the verse reference to Gen.1.99 (valid chapter, invalid verse), >> it works as expected. >> >> Can you figure out the problem? >> >> I’ve got a work around but I’d rather not do that. >> >> Thanks, >> DM >> >> _______________________________________________ >> sword-devel mailing list: sword-devel@crosswire.org >> http://crosswire.org/mailman/listinfo/sword-devel >> Instructions to unsubscribe/change your settings at above page > > _______________________________________________ > sword-devel mailing list: sword-devel@crosswire.org > http://crosswire.org/mailman/listinfo/sword-devel > Instructions to unsubscribe/change your settings at above page
_______________________________________________ sword-devel mailing list: sword-devel@crosswire.org http://crosswire.org/mailman/listinfo/sword-devel Instructions to unsubscribe/change your settings at above page