this seems to be in order.

>From 8fa20459e1ca96960e290a3cb208b946c886f85c Mon Sep 17 00:00:00 2001
From: Tamas TEVESZ <[email protected]>
Date: Thu, 18 Mar 2010 16:57:36 +0100
Subject: [PATCH] Plug leak in GenerateVariants()

---
 src/dialog.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/dialog.c b/src/dialog.c
index 6ee0703..db4a9e6 100644
--- a/src/dialog.c
+++ b/src/dialog.c
@@ -289,10 +289,10 @@ static WMArray *GenerateVariants(const char *complete)
                if (*tmp == '~' && *(tmp + 1) == '/' && getenv("HOME")) {
                        dir = wstrdup(getenv("HOME"));
                        dir = wstrappend(dir, tmp + 1);
-                       wfree(tmp);
                } else {
                        dir = tmp;
                }
+               wfree(tmp);
                prefix = wstrdup(pos + 1);
                ScanFiles(dir, prefix, (unsigned)-1, 0, variants);
                wfree(dir);
-- 
1.7.0

-- 
[-]

mkdir /nonexistent
From 8fa20459e1ca96960e290a3cb208b946c886f85c Mon Sep 17 00:00:00 2001
From: Tamas TEVESZ <[email protected]>
Date: Thu, 18 Mar 2010 16:57:36 +0100
Subject: [PATCH] Plug leak in GenerateVariants()

---
 src/dialog.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/dialog.c b/src/dialog.c
index 6ee0703..db4a9e6 100644
--- a/src/dialog.c
+++ b/src/dialog.c
@@ -289,10 +289,10 @@ static WMArray *GenerateVariants(const char *complete)
 		if (*tmp == '~' && *(tmp + 1) == '/' && getenv("HOME")) {
 			dir = wstrdup(getenv("HOME"));
 			dir = wstrappend(dir, tmp + 1);
-			wfree(tmp);
 		} else {
 			dir = tmp;
 		}
+		wfree(tmp);
 		prefix = wstrdup(pos + 1);
 		ScanFiles(dir, prefix, (unsigned)-1, 0, variants);
 		wfree(dir);
-- 
1.7.0

Reply via email to