diff --git a/sysdeps/linux/ChangeLog b/sysdeps/linux/ChangeLog index 94b78404..1809cba0 100644 --- a/sysdeps/linux/ChangeLog +++ b/sysdeps/linux/ChangeLog @@ -1,3 +1,8 @@ +2004-07-07 Benoît Dejean + + * procargs.c: (glibtop_get_proc_args_s): Fixed. error is now correctly + set to NULL before is's used. Fixed max_len behaviour. + 2004-07-03 Benoît Dejean * sysinfo.c: (init_sysinfo): Removed useless memset. diff --git a/sysdeps/linux/procargs.c b/sysdeps/linux/procargs.c index 8ab9af6f..99dd0a95 100644 --- a/sysdeps/linux/procargs.c +++ b/sysdeps/linux/procargs.c @@ -42,11 +42,11 @@ char * glibtop_get_proc_args_s (glibtop *server, glibtop_proc_args *buf, pid_t pid, unsigned max_len) { - char filename[48]; + char filename[48]; /* magiv */ char *args; gsize length; - GError *error; + GError *error = NULL; glibtop_init_s (&server, GLIBTOP_SYSDEPS_PROC_ARGS, 0); @@ -55,13 +55,14 @@ glibtop_get_proc_args_s (glibtop *server, glibtop_proc_args *buf, sprintf (filename, "/proc/%d/cmdline", pid); if(!g_file_get_contents(filename, &args, &length, &error)) { + g_error_free(error); buf->size = 0; return NULL; } if(max_len && max_len < length) { - args = g_realloc(args, max_len+1); - args[max_len] = '\0'; + args = g_realloc(args, max_len); + args[max_len - 1] = '\0'; length = max_len; }