]> granicus.if.org Git - procps-ng/commitdiff
memory leak fixed
authoralbert <>
Tue, 11 Feb 2003 08:19:12 +0000 (08:19 +0000)
committeralbert <>
Tue, 11 Feb 2003 08:19:12 +0000 (08:19 +0000)
NEWS
proc/procps.h
proc/readproc.h
top.c

diff --git a/NEWS b/NEWS
index 0d69cc7b4488534ba87f3b1a3702546f1071dcb8..599506c9e9a7459919bc33479b2851942d34be9c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,6 @@
 procps-3.1.5 --> procps-3.1.6
 
+top: memory leak fixed
 ps: new --ppid option selects by PPID
 watch: new --no-title option
 handle SPARC Linux badness
index 605144f588b7406bfda1cb1f0a506fc2b822be96..95134a6bb1ffcdaf46a5b58407f3f5d1aec55af5 100644 (file)
 #define STRTOUKL strtoul
 #endif
 
+// since gcc-2.5
+#define NORETURN __attribute__((__noreturn__))
+#define FUNCTION __attribute__((__const__))  // no access to global mem, even via ptr, and no side effect
+
 #if !defined(restrict) && __STDC_VERSION__ < 199901
-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 92    // maybe 92 or 95 ?
+#if __GNUC__ > 2 || __GNUC_MINOR__ >= 92
 #define restrict __restrict__
 #else
 #warning No restrict keyword?
 #endif
 #endif
 
+#if __GNUC__ > 2 || __GNUC_MINOR__ >= 96
+// won't alias anything, and aligned enough for anything
+#define MALLOC __attribute__ ((__malloc__))
+// no side effect, may read globals
+#define PURE __attribute__ ((__pure__))
+// tell gcc what to expect:   if(unlikely(err)) die(err);
+#define likely(x)       __builtin_expect(!!(x),1)
+#define unlikely(x)     __builtin_expect(!!(x),0)
+#define expected(x,y)   __builtin_expect((x),(y))
+#else
+#define MALLOC
+#define PURE
+#define likely(x)       (x)
+#define unlikely(x)     (x)
+#define expected(x,y)   (x)
+#endif
+
 // marks old junk, to warn non-procps library users
 #if ( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3
 #define OBSOLETE __attribute__((deprecated))
 #define OBSOLETE
 #endif
 
+#if ( __GNUC__ == 3 && __GNUC_MINOR__ > 1 ) || __GNUC__ > 3
 // Tells gcc that function is library-internal;
 // so no need to do dynamic linking at run-time.
 // This might work with slightly older compilers too.
-#if ( __GNUC__ == 3 && __GNUC_MINOR__ > 1 ) || __GNUC__ > 3
 #define HIDDEN __attribute__((visibility("hidden")))
+// Tell g++ that a function won't throw exceptions.
+#define NOTHROW __attribute__((__nothrow__))
 #else
 #define HIDDEN
+#define NOTHROW
 #endif
 
 // Like HIDDEN, but for an alias that gets created.
 #define HIDDEN_ALIAS(x) extern __typeof(x) x##_direct __attribute__((alias(#x)))
 #endif
 
-// since gcc-2.5
-#define NORETURN __attribute__((__noreturn__))
-#define FUNCTION __attribute__((__const__))  // no access to global mem, even via ptr, and no side effect
-
-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 96
-// won't alias anything, and aligned enough for anything
-#define MALLOC __attribute__ ((__malloc__))
-// no side effect, may read globals
-#define PURE __attribute__ ((__pure__))
-// tell gcc what to expect:   if(unlikely(err)) die(err);
-#define likely(x)       __builtin_expect(!!(x),1)
-#define unlikely(x)     __builtin_expect(!!(x),0)
-#define expected(x,y)   __builtin_expect((x),(y))
-#else
-#define MALLOC
-#define PURE
-#define likely(x)       (x)
-#define unlikely(x)     (x)
-#define expected(x,y)   (x)
-#endif
-
 #endif
index 5ddba15b8089e1f5083fb5291551706b74c72a07..88fe77569812847e5d211b3f5e96979d84529911 100644 (file)
@@ -212,7 +212,6 @@ extern void freeproc(proc_t* p);
 #define PROC_FILLWCHAN  0x0080 /* look up WCHAN name */
 #define PROC_FILLARG    0x0100 /* alloc and fill in `cmdline' */
 
-#define PROC_FILLBUG    0x0fff /* No idea what we need */
 #define PROC_FILLANY    0x0000 /* either stat or status will do */
 
 /* Obsolete, consider only processes with one of the passed: */
diff --git a/top.c b/top.c
index f19fee3eb154972529e9d2068da64f8a82aaf389..a3b7cb1ed7a85f10f1706088307c947cdbe0b59c 100644 (file)
--- a/top.c
+++ b/top.c
@@ -1021,7 +1021,7 @@ static proc_t **procs_refresh (proc_t **table, int flags)
 
    prochlp(NULL);                       // prep for a new frame
    if (Monpidsidx)
-      PT = openproc(PROC_FILLBUG | PROC_PID, Monpids);
+      PT = openproc(flags, Monpids);
    else
       PT = openproc(flags);
 
@@ -2096,6 +2096,7 @@ static void reframewins (void)
       if (!(Frames_libflags & L_stat)) Frames_libflags |= L_status;
    }
    if (!Frames_libflags) Frames_libflags = L_DEFAULT;
+   if (selection_type=='p') Frames_libflags |= PROC_PID;
 }
 
 
@@ -2801,7 +2802,7 @@ static proc_t **summary_show (void)
 
    // whoa first time, gotta' prime the pump...
    if (!p_table) {
-      p_table = procs_refresh(NULL, L_DEFAULT);
+      p_table = procs_refresh(NULL, Frames_libflags);
       putp(Cap_clr_scr);
       sleep(1);
    } else
@@ -3141,7 +3142,7 @@ static void frame_make (void)
    proc_t **ppt;
    int i, scrlins;
 
-   /* note: except for PROC_PID, all libproc flags are managed by
+   /* note: all libproc flags are managed by
             reframewins(), who also builds each window's column headers */
    if (!Frames_libflags) {
       reframewins();