[mapserver-users] perl errorObj

Andy Colson andy at squeakycode.net
Tue May 1 09:50:28 EDT 2012


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


More information about the mapserver-users mailing list