changeset 98246:06b2f516c2fb

(procfs_system_process_attributes): Fix cmdline in case /proc/PID/cmdline is empty.
author Eli Zaretskii <eliz@gnu.org>
date Fri, 19 Sep 2008 17:19:28 +0000
parents dd5392c63164
children c341a4b3109d
files src/process.c
diffstat 1 files changed, 10 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/process.c	Fri Sep 19 16:45:12 2008 +0000
+++ b/src/process.c	Fri Sep 19 17:19:28 2008 +0000
@@ -7419,17 +7419,17 @@
   fd = emacs_open (fn, O_RDONLY, 0);
   if (fd >= 0)
     {
-      for (cmdsize = 0; emacs_read (fd, &c, 1) == 1; cmdsize++)
+      for (cmdline_size = 0; emacs_read (fd, &c, 1) == 1; cmdline_size++)
 	{
 	  if (isspace (c) || c == '\\')
-	    cmdsize++;	/* for later quoting, see below */
+	    cmdline_size++;	/* for later quoting, see below */
 	}
-      if (cmdsize)
+      if (cmdline_size)
 	{
-	  cmdline = xmalloc (cmdsize + 1);
+	  cmdline = xmalloc (cmdline_size + 1);
 	  lseek (fd, 0L, SEEK_SET);
 	  cmdline[0] = '\0';
-	  if ((nread = read (fd, cmdline, cmdsize)) >= 0)
+	  if ((nread = read (fd, cmdline, cmdline_size)) >= 0)
 	    cmdline[nread++] = '\0';
 	  /* We don't want trailing null characters.  */
 	  for (p = cmdline + nread - 1; p > cmdline && !*p; p--)
@@ -7446,18 +7446,18 @@
 	      else if (*p == '\0')
 		*p = ' ';
 	    }
-	  cmdsize = nread;
+	  cmdline_size = nread;
 	}
       else
 	{
-	  cmdsize = strlen (cmd) + 2;
-	  cmdline = xmalloc (cmdsize + 1);
+	  cmdline_size = cmdsize + 2;
+	  cmdline = xmalloc (cmdline_size + 1);
 	  strcpy (cmdline, "[");
-	  strcat (strcat (cmdline, cmd), "]");
+	  strcat (strncat (cmdline, cmd, cmdsize), "]");
 	}
       emacs_close (fd);
       /* Command line is encoded in locale-coding-system; decode it.  */
-      cmd_str = make_unibyte_string (cmdline, cmdsize);
+      cmd_str = make_unibyte_string (cmdline, cmdline_size);
       decoded_cmd = code_convert_string_norecord (cmd_str,
 						  Vlocale_coding_system, 0);
       xfree (cmdline);