Module Name:    src
Committed By:   christos
Date:           Tue Jun  1 18:20:26 UTC 2010

Modified Files:
        src/lib/libedit: filecomplete.c

Log Message:
tidy up memory allocation and don't unnecessarily print "./" before names.


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/lib/libedit/filecomplete.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libedit/filecomplete.c
diff -u src/lib/libedit/filecomplete.c:1.18 src/lib/libedit/filecomplete.c:1.19
--- src/lib/libedit/filecomplete.c:1.18	Mon Jan 18 14:17:42 2010
+++ src/lib/libedit/filecomplete.c	Tue Jun  1 14:20:26 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: filecomplete.c,v 1.18 2010/01/18 19:17:42 christos Exp $	*/
+/*	$NetBSD: filecomplete.c,v 1.19 2010/06/01 18:20:26 christos Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include "config.h"
 #if !defined(lint) && !defined(SCCSID)
-__RCSID("$NetBSD: filecomplete.c,v 1.18 2010/01/18 19:17:42 christos Exp $");
+__RCSID("$NetBSD: filecomplete.c,v 1.19 2010/06/01 18:20:26 christos Exp $");
 #endif /* not lint && not SCCSID */
 
 #include <sys/types.h>
@@ -146,20 +146,24 @@
 			nptr = realloc(filename, strlen(temp) + 1);
 			if (nptr == NULL) {
 				free(filename);
+				filename = NULL;
 				return NULL;
 			}
 			filename = nptr;
 			(void)strcpy(filename, temp);
 			len = temp - text;	/* including last slash */
+
 			nptr = realloc(dirname, len + 1);
 			if (nptr == NULL) {
-				free(filename);
+				free(dirname);
+				dirname = NULL;
 				return NULL;
 			}
 			dirname = nptr;
 			(void)strncpy(dirname, text, len);
 			dirname[len] = '\0';
 		} else {
+			free(filename);
 			if (*text == 0)
 				filename = NULL;
 			else {
@@ -167,6 +171,7 @@
 				if (filename == NULL)
 					return NULL;
 			}
+			free(dirname);
 			dirname = NULL;
 		}
 
@@ -176,12 +181,14 @@
 		}
 
 		/* support for ``~user'' syntax */
-		free(dirpath);
 
-		if (dirname == NULL && (dirname = strdup("./")) == NULL)
-			return NULL;
-
-		if (*dirname == '~')
+		free(dirpath);
+		dirpath = NULL;
+		if (dirname == NULL) {
+			if ((dirname = strdup("")) == NULL)
+				return NULL;
+			dirpath = strdup("./");
+		} else if (*dirname == '~')
 			dirpath = fn_tilde_expand(dirname);
 		else
 			dirpath = strdup(dirname);

Reply via email to