# IPC/Msg.pm lines 61-79
sub set {
my $self = shift;
my $ds;
if(@_ == 1) {
$ds = shift;
}
else {
croak 'Bad arg count' if @_ % 2;
my %arg = @_;
my $ds = $self->stat
or return undef;
my($key,$val);
$ds->$key($val)
while(($key,$val) = each %arg);
}
msgctl($$self,IPC_SET,$ds->pack);
}
####
my $ds = $self->stat
##
##
$ds = $self->stat
##
##
{
package IPC::Msg::Bugfix;
our @ISA = qw/ IPC::Msg /;
sub set {
# corrected version of set here ...
}
}
# in your code
my $msg = new IPC::Msg::Bugfix('24h', IPC_CREAT);
# and continue as before
##
##
# avoiding buggy multiple-arg set()
# $msg->set('qbytes' => 32768);
my $ds = $msg->stat or die "stat: $!";
$ds->qbytes(32768);
$msg->set($ds);