[sword-devel] BibleTime indexing problem

Gary Holmlund gary.holmlund at gmail.com
Mon Feb 27 22:39:29 MST 2012


On 02/27/2012 08:30 PM, Greg Hellings wrote:
> On Mon, Feb 27, 2012 at 10:24 PM, Matthew Talbert<ransom1982 at gmail.com>  wrote:
>> On Mon, Feb 27, 2012 at 11:05 PM, Gary Holmlund<gary.holmlund at gmail.com>  wrote:
>>>
>>> I am investigating why the searching in BibleTime for the HunKar Bible
>>> begins
>>> Tracing down through sword "book" is set to 39 in
>>> sword:VerseKey::Normalize.
>>> Here is the call stack from setPosition down to Normalize:
>>> book is set to 39 by the following code in sword:VerseKey::Normalize
>>>
>>>        if (book<  1) {
>>>         if (--testament>  0) {
>>>          book += BMAX[testament-1]; // versekey.cpp line 1274 ::Normalize
>>>         }
>>>         continue;
>>>        }
>>
>> I don't think you should be using Normalize here. Normalize should be
>> used for user input, which could be incorrect, so it will turn out of
>> range verses (for example) into real verses. So if Normalize is doing
>> something in this case, I think it means the rest of your code is
>> wrong.
> If I'm reading the stack trace correctly, BibleTime is calling
> setPosition() which in turn calls many other things down the stack
> until setBook() calls Normalize(). It does not appear that BibleTime
> is invoking Normalize().
>
> The issue appears to be arising, if Gary's analysis is correct, in the
> handling of the special key value "[Testament Heading]". Perhaps the
> presence or absence of such a foreward in the HunKar Bible and similar
> are what is generating this problem in BibleTime?
>
> --Greg
Greg,

Yes, I believe that HunKar must have a  "[Testament Heading]" and this 
is possibly a special case that many other modules don't have. If I set 
the parameter to "1" on versekey.cpp line 522 the indexing of the book 
works fine.

     if ((!strncmp(buf, "[ Testament ", 12)) &&
         (isdigit(buf[12])) &&
         (!strcmp(buf+13, " Heading ]"))) {
         curKey->Verse(0);
         curKey->Chapter(0);
         curKey->Book(0);  // versekey.cpp line 522 ::ParseVerseList

Gary




More information about the sword-devel mailing list