Here are the test script and the patch.
--
Nekral
#!/usr/bin/perl
use Text::WrapI18N;
print "step 1\n";
print Text::WrapI18N::wrap('', ' ', '123 567 901 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
print "\n";
print "step 2\n";
print Text::WrapI18N::wrap('', ' ', '123 567 901 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
print "\n";
print "step 3\n";
print Text::WrapI18N::wrap('', ' ', '123 567 901 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
print "\n";
print "step 3\n";
print Text::WrapI18N::wrap('', ' ', '123 567 901 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
print "\n";
print "step 3\n";
--- /usr/share/perl5/Text/WrapI18N.pm.org 2003-06-25 11:14:25.000000000 +0200
+++ /usr/share/perl5/Text/WrapI18N.pm 2008-03-13 02:04:02.628000837 +0100
@@ -88,7 +88,7 @@
$len = 0;
$text = $top2 . $text;
$word = ''; $wlen = 0;
- } elsif ($wlen + $w <= $columns) {
+ } elsif ($wlen + $w <= $columns - length ($top2)) {
# the current word is sent to next line
$out .= $separator;
$len = 0;