glowing-bear/glowing-bear — pull request #282 by lorenzhs (2014-05-03 14:09:35+00:00)
Title: Fix that bug where only one line was loaded

Storytime:

For a mysterious reason, under some circumstances, only one line would be fetched in `fetchMoreLines`, but neither `numLines` nor `buffer.requestedLines` were `undefined`. The paramater `numLines` must have had some strange value, though. `connection.fetchMoreLines` is invoked through the main controllers `$scope.fetchMoreLines`, which sets the parameter to `$scope.lines` if it was undefined before. That value is computed in `$scope.calculateNumLines`, which takes the height of the lines area and divides it by the height of the first
bufferline. This computation is retriggered on every `resize` event. The first bufferline is the 'fetch more lines' link at the top of the window. If the currently active buffer doesn't have more lines, it is hidden with `ngHide`, causing its `clientHeight` property to be `0`, and the number of lines to be fetched `$scope.lines = Infinity` (due to a division by zero).

In `connection.fetchMoreLines`, the following request is then made:
```javascript
"buffer:0x" + buffer.id + "/own_lines/last_line(-" + numLines + ")/data"
```
to which WeeChat responds with one line. Voilà, there's your mess.

So what was needed to trigger the bug was to resize the window while in a buffer that has no "fetch more lines" link at the top any more because all lines were loaded.