From f98e006e6fa694003d4cba1d76660f9a5afa8597 Mon Sep 17 00:00:00 2001 From: Murray Cumming Date: Thu, 20 Jan 2011 14:29:30 +0100 Subject: Resolver: lookup_service(), lookup_by_address(): Fix the reference counting. * gio/src/resolver.[hg|ccg]: Use the correct OWNERSHIP_*, based on the documentation for the C functions. We must release both the list and the items. Bug #639575 (Michael Edwards). --- ChangeLog | 9 +++++++++ gio/src/resolver.ccg | 4 ++-- gio/src/resolver.hg | 5 ++--- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7886e3f5..396e30de 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2011-01-20 Murray Cumming + + Resolver: lookup_service(), lookup_by_address(): Fix the reference counting. + + * gio/src/resolver.[hg|ccg]: Use the correct OWNERSHIP_*, based on the + documentation for the C functions. We must release both the list and the + items. + Bug #639575 (Michael Edwards). + 2010-09-28 Armin Burgmeier * MSVC_Net2005/examples/compose/compose.vcproj: diff --git a/gio/src/resolver.ccg b/gio/src/resolver.ccg index e7be91b8..db85fb4d 100644 --- a/gio/src/resolver.ccg +++ b/gio/src/resolver.ccg @@ -40,7 +40,7 @@ Glib::ListHandle< Glib::RefPtr > Resolver::lookup_by_name(const Gli #endif //GLIBMM_EXCEPTIONS_ENABLED { GError* gerror = 0; - Glib::ListHandle< Glib::RefPtr > retvalue = Glib::ListHandle< Glib::RefPtr >(g_resolver_lookup_by_name(gobj(), hostname.c_str(), 0, &(gerror)), Glib::OWNERSHIP_SHALLOW); + Glib::ListHandle< Glib::RefPtr > retvalue = Glib::ListHandle< Glib::RefPtr >(g_resolver_lookup_by_name(gobj(), hostname.c_str(), 0, &(gerror)), Glib::OWNERSHIP_DEEP); #ifdef GLIBMM_EXCEPTIONS_ENABLED if(gerror) ::Glib::Error::throw_exception(gerror); @@ -80,7 +80,7 @@ ListHandle_SrvTarget Resolver::lookup_service(const Glib::ustring& service, cons #endif //GLIBMM_EXCEPTIONS_ENABLED { GError* gerror = 0; - ListHandle_SrvTarget retvalue = ListHandle_SrvTarget(g_resolver_lookup_service(gobj(), service.c_str(), protocol.c_str(), domain.c_str(), 0, &(gerror)), Glib::OWNERSHIP_SHALLOW); + ListHandle_SrvTarget retvalue = ListHandle_SrvTarget(g_resolver_lookup_service(gobj(), service.c_str(), protocol.c_str(), domain.c_str(), 0, &(gerror)), Glib::OWNERSHIP_DEEP); #ifdef GLIBMM_EXCEPTIONS_ENABLED if(gerror) ::Glib::Error::throw_exception(gerror); diff --git a/gio/src/resolver.hg b/gio/src/resolver.hg index 245c6dfb..dcee7f34 100644 --- a/gio/src/resolver.hg +++ b/gio/src/resolver.hg @@ -58,7 +58,7 @@ public: // g_resolver_free_addresses is just a C convenience function _IGNORE(g_resolver_free_addresses) -#m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr >',`$2($3, Glib::OWNERSHIP_SHALLOW)') +#m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr >',`$2($3, Glib::OWNERSHIP_DEEP)') _WRAP_METHOD(Glib::ListHandle< Glib::RefPtr > lookup_by_name(const Glib::ustring& hostname, const Glib::RefPtr& cancellable), g_resolver_lookup_by_name, errthrow) #ifdef GLIBMM_EXCEPTIONS_ENABLED Glib::ListHandle< Glib::RefPtr > lookup_by_name(const Glib::ustring& hostname); @@ -70,7 +70,6 @@ public: _IGNORE(g_resolver_lookup_by_name_async) _WRAP_METHOD(Glib::ListHandle< Glib::RefPtr > lookup_by_name_finish(const Glib::RefPtr& result), g_resolver_lookup_by_name_finish, errthrow) -#m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr >',`$2($3, Glib::OWNERSHIP_SHALLOW)') _WRAP_METHOD(Glib::ustring lookup_by_address(const Glib::RefPtr& address, const Glib::RefPtr& cancellable), g_resolver_lookup_by_address, errthrow) #ifdef GLIBMM_EXCEPTIONS_ENABLED Glib::ustring lookup_by_address(const Glib::RefPtr& address); @@ -82,7 +81,7 @@ public: _IGNORE(g_resolver_lookup_by_address_async) _WRAP_METHOD(Glib::ustring lookup_by_address_finish(const Glib::RefPtr& result), g_resolver_lookup_by_address_finish, errthrow) -#m4 _CONVERSION(`GList*',`ListHandle_SrvTarget',`$2($3, Glib::OWNERSHIP_SHALLOW)') +#m4 _CONVERSION(`GList*',`ListHandle_SrvTarget',`$2($3, Glib::OWNERSHIP_DEEP)') _WRAP_METHOD(ListHandle_SrvTarget lookup_service(const Glib::ustring& service, const Glib::ustring& protocol, const Glib::ustring& domain, const Glib::RefPtr& cancellable), g_resolver_lookup_service, errthrow) #ifdef GLIBMM_EXCEPTIONS_ENABLED ListHandle_SrvTarget lookup_service(const Glib::ustring& service, const Glib::ustring& protocol, const Glib::ustring& domain); -- cgit v1.2.1