[mapserver-dev] classObj.setText, text must be quoted
Lime, Steve D (DNR)
Steve.Lime at state.mn.us
Tue Feb 21 20:01:49 EST 2012
In 6.0 class->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't detect a delimited type. So does this version but in a different way:
// trunk
exp->type = MS_STRING;
exp->string = msStrdup(msyystring_buffer);
// 5.6 branch
exp->type = MS_STRING;
if((strlen(value) - strlen(msyytext)) == 2)
exp->string = strdup(msyytext); /* value was quoted */
else
exp->string = strdup(value); /* use the whole value */
I've got a feeling this has to do with escaping quotes where msyystring_buffer contains the escaped text. Perhaps we could do something like:
exp->type = MS_STRING;
if(... if first char in value is not a single or double quote ...)
exp->string = strdup(value); /* use the whole value */
else
exp->string = msStrdup(msyystring_buffer);
Alan, does this make sense or is there another way to know that escaping was processed?
Steve
________________________________
From: mapserver-dev-bounces at lists.osgeo.org [mapserver-dev-bounces at lists.osgeo.org] on behalf of Tamas Szekeres [szekerest at gmail.com]
Sent: Tuesday, February 21, 2012 4:09 PM
To: mapserver-dev at lists.osgeo.org
Subject: [mapserver-dev] classObj.setText, text must be quoted
Hi Devs,
By using the following mapscript example:
// creating a new map from scratch
mapObj map = new mapObj(null);
// adding a layer
layerObj layer = new layerObj(map);
// define the class
classObj classobj = new classObj(layer);
classobj.setText("Sample Text");
Console.WriteLine("Sample Text -> " + classobj.getTextString());
classobj.setText("Sample T");
Console.WriteLine("Sample T -> " + classobj.getTextString());
classobj.setText("\"Sample T\"");
Console.WriteLine("\"Sample T\" -> " + classobj.getTextString());
I got the following output (from trunk):
Sample Text -> "Sample Text"
Sample T -> "Sample"
"Sample T" -> "Sample T"
6.0 branch produces this:
Sample Text -> "Sample"
Sample T -> "Sample"
"Sample T" -> "Sample T"
Do we have a requirement that the texts must be quoted which is passed to classobj.setText?
Best regards,
Tamas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapserver-dev/attachments/20120222/7a422798/attachment.html
More information about the mapserver-dev
mailing list