Hi, Chris,
On Friday, 7. December 2007, Chris Dukes wrote:
> Version 0.17 of _wrap is as follows
>
> sub _wrap {
> my $len=$_[1];
> return $_[0] if length($_[0]) <= $len;
> use integer;
> my $l2 = $len-1;
> my $x = (length($_[0]) - $len) / $l2;
> my $extra = (length($_[0]) == ($l2 * $x + $len)) ? "" : "a*";
> join("\n ",unpack("a$len" . "a$l2" x $x . $extra,$_[0]));
> }
>
> Unfortunately it does not behave as documented and actually throws
> a division by zero error if wrap is set to 1.
>
> This version corrects it as documented. Replace '40' with '2'
> and everything works including the most pathological case.
>
> sub _wrap {
> my $len=$_[1];
> return $_[0] if $len <= 40;
> return $_[0] if length($_[0]) <= $len;
> use integer;
> my $l2 = $len-1;
> my $x = (length($_[0]) - $len) / $l2;
> my $extra = (length($_[0]) == ($l2 * $x + $len)) ? "" : "a*";
> join("\n ",unpack("a$len" . "a$l2" x $x . $extra,$_[0]));
> }
Thanks for thebug report.
I fixed it in perl-ldap's SVN repository with a similar patch.
CU
Peter
--
Peter Marschall
[EMAIL PROTECTED]