You can reference a module's internal key directly and use that reference to position a module just fine, but you shouldn't hold on to the reference. A subsequent call to a module's setKey method will often invalidate any previous reference to the module's internal key.

If you'd like to use a module's internal key instead of creating your own, if possible gain the reference each time with mod->getKey() (or as you have done with the (SWKey *) cast operator). Or else be careful not to call mod->setKey, but I would not recommend the latter.


On 12/07/2014 06:27 PM, Karl Kleinpaste wrote:
I asked Troy about this in IRC a bit yesterday, but I ran into problems today and I'm in need of clues.

In the av11n world, I've had to convert all VerseKey initialization to be v11n-sensitive. Mostly, I'd prefer just to use a module's own key directly:

VerseKey *k = (VerseKey *)(SWKey *)(*mod);

The problem I've got is that there are a number of instances where subsequent operations on k cause crashes or give exciting results. For one, when trying to fill a navbar book selector, the 2nd call to k->setTestament(1) (populating OT books) segfaults. Note, not the 1st call, rather it's the 2nd, every time. It's become necessary to create the key the other way:

VerseKey *k = (VerseKey *)mod->createKey();

and then calls to k->setTestament(1) work just fine. Of course I have to remember to
delete k;
which is mildly annoying to have to do, and wasn't necessary when using the module's own key.

Can anyone offer reasoning why the VerseKey from the module would have trouble with this sort of use, and why an independently-created key from the same module works fine?


_______________________________________________
sword-devel mailing list: [email protected]
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page



_______________________________________________
sword-devel mailing list: [email protected]
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page

Reply via email to