diff --git a/libgnucash/engine/gncCustomer.c b/libgnucash/engine/gncCustomer.c index ddb03aee04..2ce39c8cce 100644 --- a/libgnucash/engine/gncCustomer.c +++ b/libgnucash/engine/gncCustomer.c @@ -353,6 +353,8 @@ static void gncCustomerFree (GncCustomer *cust) gncAddressDestroy (cust->addr); gncAddressBeginEdit (cust->shipaddr); gncAddressDestroy (cust->shipaddr); + + gncJobFreeList (cust->jobs); g_list_free (cust->jobs); g_free (cust->balance); diff --git a/libgnucash/engine/gncJob.c b/libgnucash/engine/gncJob.c index 46fb843d61..8d9e42297d 100644 --- a/libgnucash/engine/gncJob.c +++ b/libgnucash/engine/gncJob.c @@ -231,6 +231,18 @@ GncJob *gncJobCreate (QofBook *book) return job; } +static void free_job_list (GncJob *job) +{ + gncJobBeginEdit (job); + gncJobDestroy (job); +} + +void gncJobFreeList (GList *jobs) +{ + GList *job_list = g_list_copy (jobs); + g_list_free_full (job_list, (GDestroyNotify)free_job_list); +} + void gncJobDestroy (GncJob *job) { if (!job) return; diff --git a/libgnucash/engine/gncJob.h b/libgnucash/engine/gncJob.h index b40cdbcab4..e68585f9e3 100644 --- a/libgnucash/engine/gncJob.h +++ b/libgnucash/engine/gncJob.h @@ -57,6 +57,7 @@ GType gnc_job_get_type(void); GncJob *gncJobCreate (QofBook *book); void gncJobDestroy (GncJob *job); +void gncJobFreeList (GList *jobs); /** \name Set Functions @{ diff --git a/libgnucash/engine/gncVendor.c b/libgnucash/engine/gncVendor.c index 67af18c61e..50695de27d 100644 --- a/libgnucash/engine/gncVendor.c +++ b/libgnucash/engine/gncVendor.c @@ -496,6 +496,8 @@ static void gncVendorFree (GncVendor *vendor) CACHE_REMOVE (vendor->notes); gncAddressBeginEdit (vendor->addr); gncAddressDestroy (vendor->addr); + + gncJobFreeList (vendor->jobs); g_list_free (vendor->jobs); g_free (vendor->balance);