<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Funny that you mentioned MOD-61. I just attached a patch to it that fixes the bugs that I found. Yes the problem is that strongsPadding is true for all dictionaries.<div class=""><br class=""></div><div class="">The first bug was that any module that has Strong’s Numbers that has keys that are not padded has to have StrongsPadding=false. Strong’s Numbers are indicated by the conf entry Feature=GreekDef and/or Feature=HebrewDef. Adding this to AbbottSmith made it work.</div><div class=""><br class=""></div><div class="">The second bug is that any module that doesn’t have Strong’s Numbers (i.e. doesn’t have Feature=GreekDef and/or Feature=HebrewDef) was having its numerical keys (keys that have a leading number or are a number) padded with leading 0. So a key like 3DogNight was padding to 00003DogNight. Adding StrongsPadding=false to such module (like BosworthToller) would prevent the problem.</div><div class=""><br class=""></div><div class="">The solution was to modify the construction of an lexdict (RawLD, RawLD4 and zLD) to make the default of StrongsPadding to depend on whether the module’s conf has&nbsp;Feature=GreekDef and/or Feature=HebrewDef or not. When it is present, it defaults to true. When it isn’t present the value of StrongsPadding is ignored and set to false.</div><div class=""><br class=""></div><div class="">I think your other patches, that report the consistency of the keys when making the module is good. It is bad to have some padded keys and some not. For example, AbbottSmith has two kinds of keys in it.</div><div class=""><br class=""></div><div class="">I don’t know if this solves all the dictionary problems surrounding Strong’s numbers. But it solves a couple of bugs.</div><div class=""><br class=""></div><div class="">In Him,</div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>DM</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jan 14, 2016, at 1:20 PM, Костя Маслюк &lt;<a href="mailto:kostyamaslyuk@gmail.com" class="">kostyamaslyuk@gmail.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">As far as i remember strongsPadding is true for dictionaries by default, so your $$$1 is actually $$$00001<div class=""><br class=""></div><div class="">Good to know sword version for software and for imp2mod used to build module. Rebuilding module and using latest sword have to fix this issue.</div><div class=""><br class=""></div><div class="">p.s. diggin into <a href="http://www.crosswire.org/tracker/browse/MOD-61" class="">http://www.crosswire.org/tracker/browse/MOD-61</a> would clear up the essence of this issue.</div><div class=""><br class=""></div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">2016-01-14 21:26 GMT+04:00 DM Smith <span dir="ltr" class="">&lt;<a href="mailto:dmsmith@crosswire.org" target="_blank" class="">dmsmith@crosswire.org</a>&gt;</span>:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="">It was reported yesterday by Karl, that BosworthToller has an infinite loop bug. And that mod2imp hits this bug.<div class=""><br class=""></div><div class="">Here is where mod2imp starts to loop:</div><div class="">$$$-ǼWED<br class="">&lt;entryFree n="-ǽwed"&gt;&lt;p&gt;&lt;form&gt;&lt;orth&gt;-ǽwed&lt;/orth&gt;&lt;/form&gt;. v. ge-ǽ.&lt;/p&gt;&lt;/entryFree&gt;<br class="">$$$-ǼWIRDLIAN<br class="">&lt;entryFree n="-ǽwirdlian"&gt;&lt;p&gt;&lt;form&gt;&lt;orth&gt;-ǽwirdlian&lt;/orth&gt;&lt;/form&gt;. v. ge-ǽ&lt;/p&gt;&lt;/entryFree&gt;<br class="">$$$-ǼÞE<br class="">&lt;entryFree n="-ǽþe"&gt;&lt;p&gt;&lt;form&gt;&lt;orth&gt;-ǽþe&lt;/orth&gt;&lt;/form&gt;. v. cyning-ǽ.&lt;/p&gt;&lt;/entryFree&gt;<br class="">$$$1<br class="">&lt;entryFree n="-ǽþe"&gt;&lt;p&gt;&lt;form&gt;&lt;orth&gt;-ǽþe&lt;/orth&gt;&lt;/form&gt;. v. cyning-ǽ.&lt;/p&gt;&lt;/entryFree&gt;<br class="">$$$1<br class="">&lt;entryFree n="-ǽþe"&gt;&lt;p&gt;&lt;form&gt;&lt;orth&gt;-ǽþe&lt;/orth&gt;&lt;/form&gt;. v. cyning-ǽ.&lt;/p&gt;&lt;/entryFree&gt;<br class="">This last entry is stuck in a loop.</div><div class=""><br class=""></div><div class=""><div class="">From JSword, I’ve dumped the module just fine. Here is the section that is problematic:</div><div class="">Legend:</div><div class="">first column: index of the entry in the module</div><div class="">Second column: offset</div><div class="">Third column: size in bytes</div><div class="">Fourth column: the key</div><div class="">Fifth column: block number</div><div class="">Sixth column: block offset</div><div class="">(didn’t include columns for the index and offset in the uncompressed block.)</div><div class="">Last column: the first part of the entry, manually truncated for readability.</div><div class=""><div style="margin:0px;font-size:11px;line-height:normal;font-family:Monaco" class="">860<span style="white-space:pre-wrap" class="">        </span>-ǼWED<span style="white-space:pre-wrap" class="">        </span>&lt;entryFree n="-ǽwed"&gt;&lt;p&gt;&lt;form&gt;&lt;orth&gt;-ǽwed&lt;/orth&gt;&lt;/form&gt;. ….</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Monaco" class="">861<span style="white-space:pre-wrap" class="">        </span>-ǼWIRDLIAN<span style="white-space:pre-wrap" class="">        </span>&lt;entryFree n="-ǽwirdlian"&gt;&lt;p&gt;&lt;form&gt;&lt;orth&gt;-ǽwirdlian&lt;/orth&gt;&lt;/form&gt;. ….</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Monaco" class="">862<span style="white-space:pre-wrap" class="">        </span>-ǼÞE<span style="white-space:pre-wrap" class="">        </span>&lt;entryFree n="-ǽþe"&gt;&lt;p&gt;&lt;form&gt;&lt;orth&gt;-ǽþe&lt;/orth&gt;&lt;/form&gt;. ….</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Monaco" class="">863<span style="white-space:pre-wrap" class="">        </span>1<span style="white-space:pre-wrap" class="">        </span>&lt;entryFree n="1"&gt;&lt;p&gt;&lt;form&gt;&lt;orth&gt;1&lt;/orth&gt;&lt;/form&gt;. ….</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Monaco" class="">864<span style="white-space:pre-wrap" class="">        </span>3<span style="white-space:pre-wrap" class="">        </span>&lt;entryFree n="3"&gt;&lt;p&gt;&lt;form&gt;&lt;orth&gt;3&lt;/orth&gt;&lt;/form&gt;. ….</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Monaco" class="">865<span style="white-space:pre-wrap" class="">        </span>A<span style="white-space:pre-wrap" class="">        </span>&lt;entryFree n="a"&gt;&lt;p&gt;&lt;form&gt;&lt;orth&gt;a&lt;/orth&gt;&lt;/form&gt;; ….</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Monaco" class="">866<span style="white-space:pre-wrap" class="">        </span>A<span style="white-space:pre-wrap" class="">        </span>&lt;entryFree n="A"&gt;&lt;p&gt;&lt;form&gt;&lt;orth&gt;A&lt;/orth&gt;&lt;/form&gt;. ….</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Monaco" class="">867<span style="white-space:pre-wrap" class="">        </span>A-BACAN<span style="white-space:pre-wrap" class="">        </span>&lt;entryFree n="a-bacan"&gt;&lt;p&gt;&lt;form&gt;&lt;orth&gt;a-bacan&lt;/orth&gt;&lt;/form&gt;, ….</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Monaco" class="">868<span style="white-space:pre-wrap" class="">        </span>A-BANNAN<span style="white-space:pre-wrap" class="">        </span>&lt;entryFree n="a-bannan"&gt;&lt;p&gt;&lt;form&gt;&lt;orth&gt;a-bannan&lt;/orth&gt;&lt;/form&gt;; ….</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Monaco" class="">870<span style="white-space:pre-wrap" class="">        </span>A-BEALH<span style="white-space:pre-wrap" class="">        </span>&lt;entryFree n="a-bealh"&gt;&lt;p&gt;&lt;form&gt;&lt;orth&gt;a-bealh&lt;/orth&gt;&lt;/form&gt; ….</div></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Monaco" class=""><br class=""></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Monaco" class="">Note: there are duplicate keys. This might be merely “a” problem, pun intended.</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Monaco" class=""><br class=""></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Monaco" class=""><span style="font-family:Helvetica;font-size:12px" class="">Just a wild guess, 1 is padded as if it were a Strong’s Number to become 00001 and that is used for a lookup. The standard behavior on lookup is to return the nearest match.</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Monaco" class=""><br class=""></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Monaco" class="">Padding to Strong’s Numbers should only happen if the module has Feature=GreekDef or Feature=HebrewDef. I don’t think it cares and pads the number anyway.</div><div style="margin:0px;line-height:normal" class=""><font face="Monaco" class=""><span style="font-size:11px" class=""><br class=""></span></font></div><div style="margin:0px;line-height:normal" class=""><font face="Monaco" class=""><span style="font-size:11px" class="">If I add StrongsPadding=false to the conf, the module works.</span></font></div><span class="HOEnZb"><font color="#888888" class=""><div style="margin:0px;line-height:normal" class=""><font face="Monaco" class=""><span style="font-size:11px" class=""><br class=""></span></font></div><div style="margin:0px;line-height:normal" class=""><font face="Monaco" class=""><span style="font-size:11px" class="">DM<br class=""></span></font><div style="font-family:Helvetica;font-size:12px" class=""><br class=""></div></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Monaco" class=""><br class=""></div><div class=""><br class=""></div></font></span></div></div><br class="">_______________________________________________<br class="">
sword-devel mailing list: <a href="mailto:sword-devel@crosswire.org" class="">sword-devel@crosswire.org</a><br class="">
<a href="http://www.crosswire.org/mailman/listinfo/sword-devel" rel="noreferrer" target="_blank" class="">http://www.crosswire.org/mailman/listinfo/sword-devel</a><br class="">
Instructions to unsubscribe/change your settings at above page<br class=""></blockquote></div><br class=""></div>
_______________________________________________<br class="">sword-devel mailing list: <a href="mailto:sword-devel@crosswire.org" class="">sword-devel@crosswire.org</a><br class=""><a href="http://www.crosswire.org/mailman/listinfo/sword-devel" class="">http://www.crosswire.org/mailman/listinfo/sword-devel</a><br class="">Instructions to unsubscribe/change your settings at above page</div></blockquote></div><br class=""></div></body></html>