> > "Aha... it's the parentheses which are the problem. They're being interpreted as > > regex metacharacters and not literal values!" > > We noticed that there seems to be an infinite loop if the template has some > or all entries with "0" in it (like in default when creating a new > template). Could this be the same cause? Sorry, I just realized that you were referring to the template rather than the layout. Yes, it would be a related problem, but a separate issue. If 'label_width' is 0, then $self->{'width'} will be 0. That means that this condition will be triggered: if (($string_width + $text_attribs->{'llx'}) > $self->{'width'}) And because $self->{'width'} is 0, then the following condition would never feasibly be triggered: if (($string_width + $text_attribs->{'llx'}) < $self->{'width'}) And this condition is the only thing that can stop the infinite loop. Really the line wrapping code looks like it would benefit from a re-write.
See bug 22429 for context
(In reply to Martin Renvoize from comment #0) > Really the line wrapping code looks like it would benefit from a re-write. Should not we go for a quick fix instead? Like last if $width == 0?
(In reply to Jonathan Druart from comment #2) > (In reply to Martin Renvoize from comment #0) > > Really the line wrapping code looks like it would benefit from a re-write. > > Should not we go for a quick fix instead? > Like last if $width == 0? I was thinking something like: last if $text_attribs->{'llx'}) >= $self->{'width'} Although that's just off the top of my head.
And I really mean off the top of my head. Like maybe that should be: last if $text_attribs->{'llx'}) > $self->{'width'} I can't recall the exact interplay between those two values