if (line != NULL) { fatalbox("line==NULL in terminal.c\n" "lineno=%d y=%d w=%d h=%d\n" "count(scrollback=%p)=%d\n" "count(screen=%p)=%d\n" "count(alt=%p)=%d alt_sblines=%d\n" "whichtree=%p treeindex=%d\n\n" "Please contact <putty@projects.tartarus.org> " "and pass on the above information.", lineno, y, term->cols, term->rows, term->scrollback, count234(term->scrollback), term->screen, count234(term->screen), term->alt_screen, count234(term->alt_screen), term->alt_sblines, whichtree, treeindex); }
static termline *lineptr(Terminal *term, int y, int lineno, int screen){    termline *line;    tree234 *whichtree;    int treeindex;    if (y >= 0) {	whichtree = term->screen;	treeindex = y;    } else {	int altlines = 0;	assert(!screen);	if (term->cfg.erase_to_scrollback &&	    term->alt_which && term->alt_screen) {	    altlines = term->alt_sblines;	}	if (y < -altlines) {	    whichtree = term->scrollback;	    treeindex = y + altlines + count234(term->scrollback);	} else {	    whichtree = term->alt_screen;	    treeindex = y + term->alt_sblines;	    /* treeindex = y + count234(term->alt_screen); */	}    }    if (whichtree == term->scrollback) {	unsigned char *cline = index234(whichtree, treeindex);	line = decompressline(cline, NULL);    } else {	line = index234(whichtree, treeindex);    }    /* We assume that we don't screw up and retrieve something out of range. */    assert(line != NULL);    resizeline(term, line, term->cols);    /* FIXME: should we sort the compressed scrollback out here? */    return line;}