Fix memory leak in res_calendar_icalendar
authorMatthew Jordan <mjordan@digium.com>
Wed, 30 Jan 2013 14:19:29 +0000 (14:19 +0000)
committerMatthew Jordan <mjordan@digium.com>
Wed, 30 Jan 2013 14:19:29 +0000 (14:19 +0000)
The ICalendar module had a systemic memory leak on each fetch of data from
the ICalendar source. The previous fetched data was not being properly
disposed. This patch makes it so that before each fetch of data, we dispose
of the previously fetched data.

(closes issue ASTERISK-21012)
Reported by: Joel Vandal
Tested by: Joel Vandal
........

Merged revisions 380451 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 380452 from http://svn.asterisk.org/svn/asterisk/branches/11

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@380460 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_calendar_icalendar.c

index dc7b5f3..3aea7a4 100644 (file)
@@ -468,6 +468,11 @@ static void *ical_load_calendar(void *void_data)
 
                ast_debug(10, "Refreshing after %d minute timeout\n", pvt->owner->refresh);
 
+               /* Free the old calendar data */
+               if (pvt->data) {
+                       icalcomponent_free(pvt->data);
+                       pvt->data = NULL;
+               }
                if (!(pvt->data = fetch_icalendar(pvt))) {
                        ast_log(LOG_WARNING, "Unable to parse iCalendar '%s'\n", pvt->owner->name);
                        continue;