in reply to Re: Re: Re: Re: Re: Re: Re: Re: Win32 Shared Memory
in thread Win32 Shared Memory
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.
|
|---|