On 5/1/2012 8:50 AM, Andy Colson wrote:
I have noticed a problem with the errorObj mapserver/mapscript/swig/perl
object.
Its treated as an array, the generated code to get the message looks
like this:
arg1 = (errorObj *)(argp1);
result = (char *)(char *) ((arg1)->message);
{
size_t size = 2048;
while (size && (result[size - 1] == '\0')) --size;
ST(argvi) = SWIG_FromCharPtrAndSize(result, size); argvi++ ;
}
When I log errors:
my $errObj = new mapscript::errorObj();
while ($errObj)
{
$s .= "ERROR: $errObj->{code}:$errObj->{message}:$errObj->{routine}<br>";
$errObj = $errObj->next();
}
I get the message, but then huge amounts of garbage data as well.
In plmodule.i I tried to add a typemap:
%typemap(memberout) char[ANY] {
$result = newSVpvn($1, strlen($1));
argvi++;
}
But it doesn't seem to work, the generated code is exactly the same as
it was before. (I'm new to mapscript and swig, so I'm just guessing)
Any help or hints on how I might fix this?
Thanks,
-Andy
Ok, this works:
%typemap(out) char[ANY] {
$result = newSVpvn($1, strlen($1));
argvi++;
}
I was worried about it changing too much code, but after looking at the
generated mapscript_wrap.c, it looks fine by me. I also tested it on my
test box and it reports errors much much better.
I'm going to put this on my live site and run it for a while.
Are there any -dev's on this list? I'm not subscribed to mapserver-dev,
I'm hoping I can post this here and a dev can verify its ok and add it
to plmodule.i.
Pretty please?
-Andy
_______________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users