changeset 11176:07a3b9c34717

(Fdirectory_files): Fix bug in IS_ANY_SEP usage introduced in Oct 30 change.
author Richard M. Stallman <rms@gnu.org>
date Sat, 01 Apr 1995 04:46:15 +0000
parents 025aeb70cfed
children 6a26526998f6
files src/dired.c
diffstat 1 files changed, 16 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/src/dired.c	Fri Mar 31 19:36:02 1995 +0000
+++ b/src/dired.c	Sat Apr 01 04:46:15 1995 +0000
@@ -113,7 +113,7 @@
      Lisp_Object dirname, full, match, nosort;
 {
   DIR *d;
-  int length;
+  int dirnamelen;
   Lisp_Object list, name, dirfilename;
   Lisp_Object handler;
   struct re_pattern_buffer *bufp;
@@ -174,7 +174,7 @@
     report_file_error ("Opening directory", Fcons (dirname, Qnil));
 
   list = Qnil;
-  length = XSTRING (dirname)->size;
+  dirnamelen = XSTRING (dirname)->size;
 
   /* Loop reading blocks */
   while (1)
@@ -191,23 +191,24 @@
 	    {
 	      if (!NILP (full))
 		{
-		  int index = XSTRING (dirname)->size;
-		  int total = len + index;
+		  int afterdirindex = dirnamelen;
+		  int total = len + dirnamelen;
+		  int needsep = 0;
+
+		  /* Decide whether we need to add a directory separator.  */
 #ifndef VMS
-		  if (length == 0
-		      || !IS_ANY_SEP (XSTRING (dirname)->data[length - 1]))
-		    total++;
+		  if (dirnamelen == 0
+		      || !IS_ANY_SEP (XSTRING (dirname)->data[dirnamelen - 1]))
+		    needsep = 1;
 #endif /* VMS */
 
-		  name = make_uninit_string (total);
+		  name = make_uninit_string (total + needsep);
 		  bcopy (XSTRING (dirname)->data, XSTRING (name)->data,
-			 index);
-#ifndef VMS
-		  if (length == 0
-		      || IS_ANY_SEP (XSTRING (dirname)->data[length - 1]))
-		    XSTRING (name)->data[index++] = DIRECTORY_SEP;
-#endif /* VMS */
-		  bcopy (dp->d_name, XSTRING (name)->data + index, len);
+			 dirnamelen);
+		  if (needsep)
+		    XSTRING (name)->data[afterdirindex++] = DIRECTORY_SEP;
+		  bcopy (dp->d_name,
+			 XSTRING (name)->data + afterdirindex, len);
 		}
 	      else
 		name = make_string (dp->d_name, len);