The code the goes on to return the modified $_[1],
sub Pack {
my $type = $_[0];
if(packing($type) eq 'c' and is_pointer($type)) {
$_[1] = pack("Z*", $_[1]);
return $_[1];
}
$_[1] = pack( packing($type), $_[1]);
return $_[1];
}
so a simple return unpack'Z*',''.$_[1]; would probably do the job in the case where the parameter is a constant string or other IN parameter.
But that solution falls down when the parameter being passed is an OUT or INOUT buffer. In that case, the calling code need for its copy of the buffer to be modifiable by the OS, so copying the buffer to null terminate it, would be a problem.
Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"Think for yourself!" - Abigail
|