@@ -25,7 +25,7 @@ int init_objects_service(int elems)
2525}
2626
2727/* destroy a single service object, set truncate_lists to TRUE when lists should be simply emptied instead of removing item by item.
28- * Enable truncate_list when removing all objects and disble when removing a specific one. */
28+ * Enable truncate_list when removing all objects and disable when removing a specific one. */
2929void destroy_objects_service (int truncate_lists )
3030{
3131 unsigned int i ;
@@ -273,6 +273,7 @@ void destroy_service(service *this_service, int truncate_lists)
273273 struct contactgroupsmember * this_contactgroupsmember , * next_contactgroupsmember ;
274274 struct contactsmember * this_contactsmember , * next_contactsmember ;
275275 struct customvariablesmember * this_customvariablesmember , * next_customvariablesmember ;
276+ struct servicesmember * this_servicesmember , * next_servicesmember ;
276277 struct objectlist * slavelist ;
277278
278279 if (!this_service )
@@ -304,6 +305,14 @@ void destroy_service(service *this_service, int truncate_lists)
304305 this_customvariablesmember = next_customvariablesmember ;
305306 }
306307
308+ /* free memory for service parents */
309+ this_servicesmember = this_service -> parents ;
310+ while (this_servicesmember != NULL ) {
311+ next_servicesmember = this_servicesmember -> next ;
312+ nm_free (this_servicesmember );
313+ this_servicesmember = next_servicesmember ;
314+ }
315+
307316 /* free memory for service groups */
308317 if (!truncate_lists ) {
309318 /* remove them one by one */
0 commit comments