1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2024-11-15 17:47:09 +00:00

Fix memleak in is_disk()

This commit is contained in:
Nikolas Garofil 2010-11-11 00:31:06 +01:00
parent 1b90218c33
commit 47965eedbc
3 changed files with 20 additions and 1 deletions

View File

@ -298,6 +298,9 @@ static void print_version(void)
<< " * Imlib2\n" << " * Imlib2\n"
#endif /* BUILD_LUA_IMLIB2 */ #endif /* BUILD_LUA_IMLIB2 */
#endif /* BUILD_LUA */ #endif /* BUILD_LUA */
#ifdef DEBUG
<< " * Debugging extensions\n"
#endif
; ;
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
@ -4498,6 +4501,8 @@ int main(int argc, char **argv)
curl_global_cleanup(); curl_global_cleanup();
#endif #endif
disk_cleanup();
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
kvm_close(kd); kvm_close(kd);
#endif #endif

View File

@ -63,6 +63,7 @@ struct diskio_stat {
extern struct diskio_stat stats; extern struct diskio_stat stats;
struct diskio_stat *prepare_diskio_stat(const char *); struct diskio_stat *prepare_diskio_stat(const char *);
void disk_cleanup(void);
int update_diskio(void); int update_diskio(void);
void clear_diskio_stats(void); void clear_diskio_stats(void);
void update_diskio_values(struct diskio_stat *, unsigned int, unsigned int); void update_diskio_values(struct diskio_stat *, unsigned int, unsigned int);

View File

@ -2291,12 +2291,25 @@ typedef struct DEV_LIST_TYPE
} DEV_LIST, *DEV_LIST_PTR; } DEV_LIST, *DEV_LIST_PTR;
DEV_LIST_PTR dev_head = NULL;
void disk_cleanup() {
DEV_LIST_PTR dev_next, dev_cur = dev_head;
while(dev_cur) {
dev_next = dev_cur->next;
free(dev_cur->dev_name);
free(dev_cur);
dev_cur = dev_next;
}
dev_head = NULL;
}
/* Same as sf #2942117 but memoized using a linked list */ /* Same as sf #2942117 but memoized using a linked list */
int is_disk(char *dev) int is_disk(char *dev)
{ {
char syspath[PATH_MAX]; char syspath[PATH_MAX];
char *slash; char *slash;
static DEV_LIST_PTR dev_head = NULL;
DEV_LIST_PTR dev_cur, dev_last; DEV_LIST_PTR dev_cur, dev_last;
dev_cur = dev_head; dev_cur = dev_head;