=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-capture-pane.c,v retrieving revision 1.27 retrieving revision 1.28 diff -c -r1.27 -r1.28 *** src/usr.bin/tmux/cmd-capture-pane.c 2014/05/13 07:34:35 1.27 --- src/usr.bin/tmux/cmd-capture-pane.c 2014/06/20 10:46:59 1.28 *************** *** 1,4 **** ! /* $OpenBSD: cmd-capture-pane.c,v 1.27 2014/05/13 07:34:35 nicm Exp $ */ /* * Copyright (c) 2009 Jonathan Alvarado --- 1,4 ---- ! /* $OpenBSD: cmd-capture-pane.c,v 1.28 2014/06/20 10:46:59 nicm Exp $ */ /* * Copyright (c) 2009 Jonathan Alvarado *************** *** 94,99 **** --- 94,100 ---- int n, with_codes, escape_c0, join_lines; u_int i, sx, top, bottom, tmp; char *cause, *buf, *line; + const char *Sflag, *Eflag; size_t linelen; sx = screen_size_x(&wp->base); *************** *** 109,135 **** } else gd = wp->base.grid; ! n = args_strtonum(args, 'S', INT_MIN, SHRT_MAX, &cause); ! if (cause != NULL) { ! top = gd->hsize; ! free(cause); ! } else if (n < 0 && (u_int) -n > gd->hsize) top = 0; ! else ! top = gd->hsize + n; ! if (top > gd->hsize + gd->sy - 1) ! top = gd->hsize + gd->sy - 1; ! n = args_strtonum(args, 'E', INT_MIN, SHRT_MAX, &cause); ! if (cause != NULL) { bottom = gd->hsize + gd->sy - 1; ! free(cause); ! } else if (n < 0 && (u_int) -n > gd->hsize) ! bottom = 0; ! else ! bottom = gd->hsize + n; ! if (bottom > gd->hsize + gd->sy - 1) ! bottom = gd->hsize + gd->sy - 1; if (bottom < top) { tmp = bottom; --- 110,146 ---- } else gd = wp->base.grid; ! Sflag = args_get(args, 'S'); ! if (Sflag != NULL && strcmp(Sflag, "-") == 0) top = 0; ! else { ! n = args_strtonum(args, 'S', INT_MIN, SHRT_MAX, &cause); ! if (cause != NULL) { ! top = gd->hsize; ! free(cause); ! } else if (n < 0 && (u_int) -n > gd->hsize) ! top = 0; ! else ! top = gd->hsize + n; ! if (top > gd->hsize + gd->sy - 1) ! top = gd->hsize + gd->sy - 1; ! } ! Eflag = args_get(args, 'E'); ! if (Eflag != NULL && strcmp(Eflag, "-") == 0) bottom = gd->hsize + gd->sy - 1; ! else { ! n = args_strtonum(args, 'E', INT_MIN, SHRT_MAX, &cause); ! if (cause != NULL) { ! bottom = gd->hsize + gd->sy - 1; ! free(cause); ! } else if (n < 0 && (u_int) -n > gd->hsize) ! bottom = 0; ! else ! bottom = gd->hsize + n; ! if (bottom > gd->hsize + gd->sy - 1) ! bottom = gd->hsize + gd->sy - 1; ! } if (bottom < top) { tmp = bottom;