From 58e3bdee62aed3d110d8af170e70147208142bc9 Mon Sep 17 00:00:00 2001 From: Daniel Alley Date: Thu, 18 Nov 2021 15:45:49 -0500 Subject: Fix lifetime issues closes #293 --- src/package.c | 5 ----- src/python/xml_parser-py.c | 5 ++++- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/package.c b/src/package.c index 223e271..0b14cf7 100644 --- a/src/package.c +++ b/src/package.c @@ -87,11 +87,6 @@ cr_package_free(cr_Package *package) if (package->chunk && !(package->loadingflags & CR_PACKAGE_SINGLE_CHUNK)) g_string_chunk_free (package->chunk); -/* Note: Since glib 2.28 - * g_slist_foreach && g_slist_free could be replaced with one function: - * g_slist_free_full() - */ - if (package->requires) { g_slist_free_full(package->requires, g_free); } diff --git a/src/python/xml_parser-py.c b/src/python/xml_parser-py.c index a1f92f8..9d3d5a5 100644 --- a/src/python/xml_parser-py.c +++ b/src/python/xml_parser-py.c @@ -77,8 +77,10 @@ c_newpkgcb(cr_Package **pkg, } } + if (result->ob_refcnt == 1) { + *pkg = NULL; + } Py_DECREF(result); - return CR_CB_RET_OK; } @@ -87,6 +89,7 @@ c_pkgcb(cr_Package *pkg, void *cbdata, GError **err) { + // destroys "pkg" PyObject *arglist, *result, *py_pkg; CbData *data = cbdata; -- cgit v1.2.3