[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
memleaks on gn_cfg_info within cfgreader.c
From: |
Sander Wichers |
Subject: |
memleaks on gn_cfg_info within cfgreader.c |
Date: |
Fri, 11 Mar 2005 14:21:35 -0000 |
Hi,
Hope it's the right place to post this.
There appears to be memory leaking after calling gn_cfg_file_read, which
indirectly fills the gn_cfg_info linked lists. I haven't checked the cvs
version but I've grepped for gn_cfg_info in 0.6.4 and I don't see any memory
being freed on this variable.
Anyway, I have some cleanup code for you to add. (These were diffed against
0.6.4)
Yours,
Sander Wichers
*** gnokii/common/cfgreader.c Sun Oct 17 22:44:20 2004
--- common/cfgreader.c Fri Mar 11 13:50:52 2005
***************
*** 457,462 ****
--- 457,505 ----
return retval;
}
+ void gn_cfg_close_entry(struct gn_cfg_entry *ent)
+ {
+ if (ent->next != NULL) {
+ gn_cfg_close_entry(ent->next);
+ free(ent->next);
+ }
+
+ if (ent->value)
+ free(ent->value);
+ if (ent->key)
+ free(ent->key);
+ }
+
+ void gn_cfg_close_header(struct gn_cfg_header *head)
+ {
+ if (head->entries != NULL) {
+ gn_cfg_close_entry(head->entries);
+ free(head->entries);
+ head->entries = NULL;
+ }
+
+ if (head->next != NULL) {
+ gn_cfg_close_header(head->next);
+ free(head->next);
+ head->next = NULL;
+ }
+ if (head->section)
+ free(head->section);
+ head->prev = NULL;
+ }
+
+ API int gn_cfg_close()
+ {
+ if (gn_cfg_info != NULL)
+ {
+ gn_cfg_close_header(gn_cfg_info);
+ free(gn_cfg_info);
+ gn_cfg_info = NULL;
+ }
+
+ return 0;
+ }
+
API int gn_cfg_file_read(const char *file)
{
char *val;
*** gnokii/include/gnokii.h Sun Oct 17 22:44:22 2004
--- include/gnokii.h Fri Mar 11 13:34:24 2005
***************
*** 104,109 ****
--- 104,110 ----
API int gn_cfg_file_read(const char *filename);
API int gn_cfg_read_default();
API int gn_cfg_phone_load(const char *iname, struct gn_statemachine *state);
+ API int gn_cfg_close();
/* In/Out routines, file formats */
API int gn_phonebook2vcard(FILE *f, gn_phonebook_entry *entry, char
*location);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- memleaks on gn_cfg_info within cfgreader.c,
Sander Wichers <=