Summary: | '0' width can lead to an infinite loop. | ||
---|---|---|---|
Product: | Koha | Reporter: | Martin Renvoize (ashimema) <martin.renvoize> |
Component: | Label/patron card printing | Assignee: | Chris Nighswonger <cnighswonger> |
Status: | NEW --- | QA Contact: | Testopia <testopia> |
Severity: | normal | ||
Priority: | P5 - low | CC: | christian.stelzenmueller, dcook, jonathan.druart |
Version: | Main | ||
Hardware: | All | ||
OS: | All | ||
See Also: |
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=22429 https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=22462 |
||
Change sponsored?: | --- | Patch complexity: | --- |
Documentation contact: | Documentation submission: | ||
Text to go in the release notes: | Version(s) released in: | ||
Circulation function: | |||
Bug Depends on: | 22429 | ||
Bug Blocks: |
(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 |
> > "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.