I assume loadExpressionString is called from many places, so it is difficult to make sure about the purpose. Another option would be to use the original string (&quot;value&quot; argument of loadExpressionString) and not msyystring when getSymbol fails.<div>
<br></div><div>Tamas</div><div><br><br><div class="gmail_quote">2012/2/23 Lime, Steve D (DNR) <span dir="ltr">&lt;<a href="mailto:Steve.Lime@state.mn.us">Steve.Lime@state.mn.us</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">






<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:black">I agree on the awkward part.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:black">I’d add the quotes if not present in loadExpressionString() so setExpression and setFilter also worked the same way. Problem is determining when you want to quote.
 I suppose a little helper function could be added.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:black">Steve<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"> Tamas Szekeres [mailto:<a href="mailto:szekerest@gmail.com" target="_blank">szekerest@gmail.com</a>]
<br>
<b>Sent:</b> Thursday, February 23, 2012 1:49 PM</span></p><div><div></div><div class="h5"><br>
<b>To:</b> Lime, Steve D (DNR)<br>
<b>Cc:</b> <a href="mailto:mapserver-dev@lists.osgeo.org" target="_blank">mapserver-dev@lists.osgeo.org</a><br>
<b>Subject:</b> Re: [mapserver-dev] classObj.setText, text must be quoted<u></u><u></u></div></div><p></p>
</div><div><div></div><div class="h5">
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Steve,<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">I&#39;m still uncertain about the most reasonable solution here. Forcing the requirement to quote strings in a mapfile looks fairly straightforward to use, but quoting strings in classObj.setText is a bit awkward. Wouldn&#39;t that be a solution
 to add quotes around a string in the interface file (class.i) if that hasn&#39;t yet been added by the user?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Best regards,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Tamas<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><u></u> <u></u></p>
<div>
<p class="MsoNormal">2012/2/22 Lime, Steve D (DNR) &lt;<a href="mailto:Steve.Lime@state.mn.us" target="_blank">Steve.Lime@state.mn.us</a>&gt;<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal">msyytext/msyystring isn’t being truncated per se it’s just that a string with spaces is not valid in a mapfile. That is:<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">  TEXT Sample Text<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">would normally generate a parsing error. In this case only the string Sample Text is being parsed and without the quotes only the text ahead of the space is matched. I suppose it’s
 possible to relax the string matching expression in maplexer.l when in EXPRESSION_STRING context to allow spaces and other characters.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">Steve<u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"> </span><u></u><u></u></p>
<div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"> Tamas Szekeres [mailto:<a href="mailto:szekerest@gmail.com" target="_blank">szekerest@gmail.com</a>]
<br>
<b>Sent:</b> Wednesday, February 22, 2012 9:14 AM<br>
<b>To:</b> Lime, Steve D (DNR)<br>
<b>Cc:</b> <a href="mailto:mapserver-dev@lists.osgeo.org" target="_blank">mapserver-dev@lists.osgeo.org</a><br>
<b>Subject:</b> Re: [mapserver-dev] classObj.setText, text must be quoted</span><u></u><u></u></p>
</div>
<div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">Checking the first character instead of the length would be a good solution for MapServer 6.0 and the earlier versions. But I&#39;m not sure how this would solve the same problem in
 trunk. Actually when getSymbol is failing we can obtain only a truncated text from msyytext/msyystring so we cannot use this to assign the value to the corresponding property. We should probably find out the reason why  msyytext/msyystring is truncated in
 this case or use the &quot;value&quot; argument of loadExpressionString instead. Does this make sense?<u></u><u></u></p>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Best regards,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Tamas<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"> <u></u><u></u></p>
<div>
<p class="MsoNormal">2012/2/22 Lime, Steve D (DNR) &lt;<a href="mailto:Steve.Lime@state.mn.us" target="_blank">Steve.Lime@state.mn.us</a>&gt;<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;color:black">In 6.0 class-&gt;text is a true expressionObj, not a string as in previous versions so at least via SWIG setText()
 calls msLoadExpressionString(). I think there could be a bug in that function at line 2169 (in trunk). Older versions of that function treat the input string as a the expression if parsing doesn&#39;t detect a delimited type. So does this version but in a different
 way:<br>
<br>
// trunk<br>
    exp-&gt;type = MS_STRING;<br>
    exp-&gt;string = msStrdup(msyystring_buffer);<br>
<br>
// 5.6 branch<br>
    exp-&gt;type = MS_STRING;<br>
    if((strlen(value) - strlen(msyytext)) == 2)<br>
      exp-&gt;string = strdup(msyytext); /* value was quoted */<br>
    else<br>
      exp-&gt;string = strdup(value); /* use the whole value */<br>
<br>
I&#39;ve got a feeling this has to do with escaping quotes where msyystring_buffer contains the escaped text. Perhaps we could do something like:<br>
<br>
    exp-&gt;type = MS_STRING;<br>
    if(... if first char in value is not a single or double quote ...)<br>
        exp-&gt;string = strdup(value);  /* use the whole value */<br>
    else<br>
        exp-&gt;string = msStrdup(msyystring_buffer);<br>
<br>
Alan, does this make sense or is there another way to know that escaping was processed?<br>
<br>
Steve</span><u></u><u></u></p>
<div>
<div class="MsoNormal" align="center" style="text-align:center"><span style="color:black">
<hr size="2" width="100%" align="center">
</span></div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;color:black">From:</span></b><span style="font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;color:black">
<a href="mailto:mapserver-dev-bounces@lists.osgeo.org" target="_blank">mapserver-dev-bounces@lists.osgeo.org</a> [<a href="mailto:mapserver-dev-bounces@lists.osgeo.org" target="_blank">mapserver-dev-bounces@lists.osgeo.org</a>] on behalf of Tamas Szekeres [<a href="mailto:szekerest@gmail.com" target="_blank">szekerest@gmail.com</a>]<br>

<b>Sent:</b> Tuesday, February 21, 2012 4:09 PM<br>
<b>To:</b> <a href="mailto:mapserver-dev@lists.osgeo.org" target="_blank">mapserver-dev@lists.osgeo.org</a><br>
<b>Subject:</b> [mapserver-dev] classObj.setText, text must be quoted</span><u></u><u></u></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="color:black">Hi Devs,
</span><u></u><u></u></p>
<div>
<p class="MsoNormal"><span style="color:black"> </span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">By using the following mapscript example:</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"> </span><u></u><u></u></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="color:black">     <i>// creating a new map from scratch</i></span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black">      mapObj map = new mapObj(null);</span></i><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black">      // adding a layer</span></i><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black">      layerObj layer = new layerObj(map);</span></i><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black">      // define the class</span></i><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black">      classObj classobj = new classObj(layer);</span></i><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black"> classobj.setText(&quot;Sample Text&quot;);</span></i><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black">      Console.WriteLine(&quot;Sample Text -&gt; &quot; + classobj.getTextString());</span></i><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black"> classobj.setText(&quot;Sample T&quot;);</span></i><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black">      Console.WriteLine(&quot;Sample T -&gt; &quot; + classobj.getTextString());</span></i><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black"> classobj.setText(&quot;\&quot;Sample T\&quot;&quot;);</span></i><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black">      Console.WriteLine(&quot;\&quot;Sample T\&quot; -&gt; &quot; + classobj.getTextString());</span></i><u></u><u></u></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="color:black"> </span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">I got the following output (from trunk):</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"> </span><u></u><u></u></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="color:black">Sample Text -&gt; &quot;Sample Text&quot;</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Sample T -&gt; &quot;Sample&quot;</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">&quot;Sample T&quot; -&gt; &quot;Sample T&quot;</span><u></u><u></u></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="color:black"> </span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"> </span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">6.0 branch produces this:</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"> </span><u></u><u></u></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="color:black">Sample Text -&gt; &quot;Sample&quot;</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Sample T -&gt; &quot;Sample&quot;</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">&quot;Sample T&quot; -&gt; &quot;Sample T&quot;</span><u></u><u></u></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="color:black"> </span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Do we have a requirement that the texts must be quoted which is passed to <i>classobj.setText?</i></span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"> </span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Best regards,</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"> </span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Tamas</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"> </span><u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div></div></div>
</div>

</blockquote></div><br></div>