From 06cbe800bf3e2586b015dc271c78aa00651833f5 Mon Sep 17 00:00:00 2001 From: gotmor Date: Thu, 30 Aug 2007 22:48:30 +0000 Subject: prevent int overflow in ^ro() prevent stairs effect in ^ro() when dzen.line_height - recth is not a multiple of 2 thanks Sebastien Gross README fix git-svn-id: http://dzen.googlecode.com/svn/trunk@164 f2baff5b-bf2c-0410-a398-912abdc3d8b2 --- draw.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'draw.c') diff --git a/draw.c b/draw.c index 4440084..b3f9177 100644 --- a/draw.c +++ b/draw.c @@ -364,9 +364,13 @@ parse_line(const char *line, int lnr, int align, int reverse, int nodraw) { case recto: get_rect_vals(tval, &rectw, &recth); + if (!rectw) break; + rectw = rectw+px > dzen.w ? dzen.w-px : rectw; recth = recth > dzen.line_height ? dzen.line_height-2 : recth-1; recty = (dzen.line_height - recth)/2; + /* prevent from stairs effect when rounding recty */ + if (!((dzen.line_height - recth) % 2)) recty--; setcolor(&pm, px, rectw, lastfg, lastbg, reverse, nobg); XDrawRectangle(dzen.dpy, pm, dzen.tgc, px, (int)recty, rectw-1, recth); px += rectw; @@ -501,9 +505,13 @@ parse_line(const char *line, int lnr, int align, int reverse, int nodraw) { case recto: get_rect_vals(tval, &rectw, &recth); + if (!rectw) break; + rectw = rectw+px > dzen.w ? dzen.w-px : rectw; recth = recth > dzen.line_height ? dzen.line_height-2 : recth-1; recty = (dzen.line_height - recth)/2; + /* prevent from stairs effect when rounding recty */ + if (!((dzen.line_height - recth) % 2)) recty--; setcolor(&pm, px, rectw, lastfg, lastbg, reverse, nobg); XDrawRectangle(dzen.dpy, pm, dzen.tgc, px, (int)recty, rectw-1, recth); px += rectw; -- cgit v1.2.3-54-g00ecf