X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FScalar-Vec-Util.git;a=blobdiff_plain;f=lib%2FScalar%2FVec%2FUtil.pm;h=b5a8080e7f235a1cde6ca7693f59dd9547d92af0;hp=12d049c26364708fa28e59b337745040da53e5e4;hb=c36fbc2566b9aeb0642e7a1b2fb8fc843faff3e9;hpb=01ef742d705c0bd6577139d1ee8a2808101336da diff --git a/lib/Scalar/Vec/Util.pm b/lib/Scalar/Vec/Util.pm index 12d049c..b5a8080 100644 --- a/lib/Scalar/Vec/Util.pm +++ b/lib/Scalar/Vec/Util.pm @@ -132,14 +132,17 @@ sub vshift { $left = 0; $bits = -$bits; } - $bits = $length if $bits > $length; - $length -= $bits; - if ($left) { - vcopy($_[0], $start, $_[0], $start + $bits, $length); - vfill($_[0], $start, $bits, $insert) if defined $insert; + if ($bits < $length) { + $length -= $bits; + if ($left) { + vcopy($_[0], $start, $_[0], $start + $bits, $length); + vfill($_[0], $start, $bits, $insert) if defined $insert; + } else { + vcopy($_[0], $start + $bits, $_[0], $start, $length); + vfill($_[0], $start + $length, $bits, $insert) if defined $insert; + } } else { - vcopy($_[0], $start + $bits, $_[0], $start, $length); - vfill($_[0], $start + $length, $bits, $insert) if defined $insert; + vfill($_[0], $start, $length, $insert) if defined $insert; } }