From bead8fe5a91e28295a93126d1ea9483c28c27e88 Mon Sep 17 00:00:00 2001 From: simon Date: Sun, 12 Mar 2006 14:53:18 +0000 Subject: [PATCH] Fix inadvertent O(N^2) loop within do_paint() which I just discovered when profiling IPBT. git-svn-id: svn://svn.tartarus.org/sgt/putty@6602 cda61777-01e9-0310-a592-d414129be87e --- terminal.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/terminal.c b/terminal.c index db61a1ac..72ff9f90 100644 --- a/terminal.c +++ b/terminal.c @@ -4822,10 +4822,12 @@ static void do_paint(Terminal *term, Context ctx, int may_optimise) != newline[j].attr) { int k; - for (k = laststart; k < j; k++) - term->disptext[i]->chars[k].attr |= ATTR_INVALID; + if (!dirtyrect) { + for (k = laststart; k < j; k++) + term->disptext[i]->chars[k].attr |= ATTR_INVALID; - dirtyrect = TRUE; + dirtyrect = TRUE; + } } if (dirtyrect) -- 2.11.0