<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:"Abadi Extra Light";}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ligatures:standardcontextual;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ligatures:standardcontextual;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:1641230587;
mso-list-type:hybrid;
mso-list-template-ids:-1341073970 336134145 336134147 336134149 336134145 336134147 336134149 336134145 336134147 336134149;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-NZ link="#0563C1" vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>Here is an issue that took me too many days to unravel.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The order of source statements in a thconfig affects the outcome of the compilation.<o:p></o:p></p><p class=MsoNormal>I think the problem, or constraint, can be described as:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><ul style='margin-top:0cm' type=disc><li class=MsoListParagraph style='margin-left:0cm;mso-list:l0 level1 lfo1'>Multi-line source statements must follow all single line source statements, else not all surveys will not be read correctly, or<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0cm;mso-list:l0 level1 lfo1'>Single-line source statements that follow a multi-line source statement will not be read.<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>For example, a thconfig contains:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif;background:yellow;mso-highlight:yellow'>source ./Greenlinkcave/INDEXGreenlink.th<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif;background:yellow;mso-highlight:yellow'>source ./swissmaidcave/INDEXSwissMaid.th</span><span style='font-family:"Abadi Extra Light",sans-serif'><o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif;background:lime;mso-highlight:lime'>source<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif;background:lime;mso-highlight:lime'> #join the two cave surveys without an index file<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif;background:lime;mso-highlight:lime'> equate 133@jp.SwissM I68@s.Greenlink<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif;background:lime;mso-highlight:lime'> equate 156@second.SwissM S45@ss.Greenlink<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif;background:lime;mso-highlight:lime'> equate 144@jp.SwissM H32@h.Greenlink <o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif;background:lime;mso-highlight:lime'>endsource</span><span style='font-family:"Abadi Extra Light",sans-serif'><o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif;background:yellow;mso-highlight:yellow'>source ./middleearthcave/INDEXMiddleEarth.th</span><span style='font-family:"Abadi Extra Light",sans-serif'><o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif;background:lime;mso-highlight:lime'>source<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif;background:lime;mso-highlight:lime'> #join the two cave surveys without an index file<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif;background:lime;mso-highlight:lime'> equate F76@f.MiddleEarth F102@f2.Greenlink <o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif;background:lime;mso-highlight:lime'>endsource</span><span style='font-family:"Abadi Extra Light",sans-serif'><o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif'><o:p> </o:p></span></p><p class=MsoNormal>This results in a fatal error:<o:p></o:p></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif'>reading source files ... done<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif'>preprocessing database ... done<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Abadi Extra Light",sans-serif'>C:\Program Files\Therion\therion.exe: error -- ./middleearthcave/INDEXMiddleEarth.th [24] -- survey does not exist -- 74<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Which confused me because each of these would compile alone an in combination via other thconfig files.<o:p></o:p></p><p class=MsoNormal>If I changed the order of the source statements, the ‘non-existent’ survey would change.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I tried 6.2.0 + fd5c1b6 and 6.17 and 6.13 all with similar effect (although I’m not that confident because the latter two being 32-bit and toggling between the 64-bit 6.2.0 variants results in duplicate therion programs on my Windows machine, thus I’m not sure I have ‘clean’ installs). <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Too late, I tried putting all the <span style='background:yellow;mso-highlight:yellow'>single line sources</span> first, followed by the <span style='background:lime;mso-highlight:lime'>multi-line sources</span>, and viola, success.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So this seems like a bug, in that I understand Therion should read all sources before processing the survey and map input. With sources, this seems not to be happening, and Therion is crashing inappropriately if the sources are not listed in the ‘correct’ order.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Bruce<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>PS: Yes, I know the example above is a rather messy way of treating sources. I would not usually do this – it is a hack to work around an unfortunate decision made early in the project history.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>