[glibmm/glibmm-2-60] Gio: Fix ownership of some lists and arrays
- From: Kjell Ahlstedt <kjellahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glibmm/glibmm-2-60] Gio: Fix ownership of some lists and arrays
- Date: Sun, 21 Jul 2019 14:06:30 +0000 (UTC)
commit ad52f50f2c9bc2b11cbcec257491771972825087
Author: Kjell Ahlstedt <kjellahlstedt gmail com>
Date: Sun Jul 21 16:00:29 2019 +0200
Gio: Fix ownership of some lists and arrays
* gio/src/drive.hg: get_volumes(): Glib::OWNERSHIP_SHALLOW -> DEEP
* gio/src/mountoperation.hg: signal_ask_question(): DEEP -> NONE
A signal handler shall not deallocate its input data.
* gio/src/themedicon.hg: get_names(): DEEP -> NONE
* gio/src/tlsdatabase.[ccg|hg]: lookup_certificates_issued_by[_finish]_vfunc():
g_list_copy() -> g_list_copy_deep()
* gio/src/volumemonitor.hg: get_connected_drives(), get_volumes(),
get_mounts(): SHALLOW -> DEEP
gio/src/drive.hg | 2 +-
gio/src/mountoperation.hg | 2 +-
gio/src/themedicon.hg | 2 +-
gio/src/tlsdatabase.ccg | 9 +++++++++
gio/src/tlsdatabase.hg | 19 ++++++++++---------
gio/src/volumemonitor.hg | 6 +++---
6 files changed, 25 insertions(+), 15 deletions(-)
---
diff --git a/gio/src/drive.hg b/gio/src/drive.hg
index 9593de9d..4871a3a2 100644
--- a/gio/src/drive.hg
+++ b/gio/src/drive.hg
@@ -61,7 +61,7 @@ public:
_WRAP_METHOD(bool has_volumes() const, g_drive_has_volumes)
-#m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Volume> >',`$2($3, Glib::OWNERSHIP_SHALLOW)')
+#m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Volume> >',`$2($3, Glib::OWNERSHIP_DEEP)')
_WRAP_METHOD(Glib::ListHandle< Glib::RefPtr<Volume> > get_volumes(), g_drive_get_volumes)
_WRAP_METHOD(bool is_media_removable() const, g_drive_is_media_removable)
diff --git a/gio/src/mountoperation.hg b/gio/src/mountoperation.hg
index 1e69765e..99492b3b 100644
--- a/gio/src/mountoperation.hg
+++ b/gio/src/mountoperation.hg
@@ -80,7 +80,7 @@ public:
//TODO: We really need some test to make sure that our use of StringArrayHandle is correct. murrayc.
#m4 _CONVERSION(`const Glib::StringArrayHandle&',`const gchar**',`const_cast<const gchar**>(($3).data())')
-#m4 _CONVERSION(`const gchar**',`const Glib::StringArrayHandle&',`Glib::StringArrayHandle($3,
Glib::OWNERSHIP_DEEP)')
+#m4 _CONVERSION(`const gchar**',`const Glib::StringArrayHandle&',`Glib::StringArrayHandle($3,
Glib::OWNERSHIP_NONE)')
_WRAP_SIGNAL(void ask_question(const Glib::ustring& message, const Glib::StringArrayHandle& choices),
ask_question)
_WRAP_SIGNAL(void reply(MountOperationResult result), reply)
diff --git a/gio/src/themedicon.hg b/gio/src/themedicon.hg
index 249b1d11..7aaf2332 100644
--- a/gio/src/themedicon.hg
+++ b/gio/src/themedicon.hg
@@ -96,7 +96,7 @@ public:
_WRAP_METHOD(void prepend_name(const std::string& iconname), g_themed_icon_prepend_name)
_WRAP_METHOD(void append_name(const std::string& iconname), g_themed_icon_append_name)
- #m4 _CONVERSION(`const gchar* const*',`Glib::StringArrayHandle',`Glib::StringArrayHandle($3,
Glib::OWNERSHIP_DEEP)')
+ #m4 _CONVERSION(`const gchar* const*',`Glib::StringArrayHandle',`Glib::StringArrayHandle($3,
Glib::OWNERSHIP_NONE)')
_WRAP_METHOD(Glib::StringArrayHandle get_names() const, g_themed_icon_get_names)
//There are no signals.
diff --git a/gio/src/tlsdatabase.ccg b/gio/src/tlsdatabase.ccg
index e464c170..80ef0a7e 100644
--- a/gio/src/tlsdatabase.ccg
+++ b/gio/src/tlsdatabase.ccg
@@ -20,3 +20,12 @@
#include <giomm/tlscertificate.h>
#include <giomm/tlsinteraction.h>
#include "slot_async.h"
+
+namespace
+{
+// Used in call to g_list_copy_deep().
+void* list_copy_ref(const void* src, void* /* data */)
+{
+ return g_object_ref(const_cast<void*>(src));
+}
+} // anonymous namespace
diff --git a/gio/src/tlsdatabase.hg b/gio/src/tlsdatabase.hg
index 52d1a25e..a99daaae 100644
--- a/gio/src/tlsdatabase.hg
+++ b/gio/src/tlsdatabase.hg
@@ -91,8 +91,8 @@ public:
#m4 _CONVERSION(`GSocketConnectable*',`const Glib::RefPtr<const SocketConnectable>&',`Glib::wrap($3, true)')
#m4 _CONVERSION(`GTlsInteraction*',`const Glib::RefPtr<TlsInteraction>&',`Glib::wrap($3, true)')
- _WRAP_VFUNC(TlsCertificateFlags verify_chain(const Glib::RefPtr<TlsCertificate>& chain, const
Glib::ustring& purpose, const Glib::RefPtr<const SocketConnectable>& identity, const
Glib::RefPtr<TlsInteraction>& interaction, const Glib::RefPtr<Cancellable>& cancellable{.?},
TlsDatabaseVerifyFlags flags{.}) const, "verify_chain", errthrow)
- _WRAP_VFUNC(void verify_chain_async(const Glib::RefPtr<TlsCertificate>& chain, const Glib::ustring&
purpose, const Glib::RefPtr<const SocketConnectable>& identity, const Glib::RefPtr<TlsInteraction>&
interaction, const SlotAsyncReady& slot{callback}, const Glib::RefPtr<Cancellable>& cancellable{.?},
TlsDatabaseVerifyFlags flags{.}) const, "verify_chain_async", slot_name slot, slot_callback
SignalProxy_async_callback)
+ _WRAP_VFUNC(TlsCertificateFlags verify_chain(const Glib::RefPtr<TlsCertificate>& chain, const
Glib::ustring& purpose, const Glib::RefPtr<const SocketConnectable>& identity, const
Glib::RefPtr<TlsInteraction>& interaction, const Glib::RefPtr<Cancellable>& cancellable{.},
TlsDatabaseVerifyFlags flags{.}) const, "verify_chain", errthrow)
+ _WRAP_VFUNC(void verify_chain_async(const Glib::RefPtr<TlsCertificate>& chain, const Glib::ustring&
purpose, const Glib::RefPtr<const SocketConnectable>& identity, const Glib::RefPtr<TlsInteraction>&
interaction, const SlotAsyncReady& slot{callback}, const Glib::RefPtr<Cancellable>& cancellable{.},
TlsDatabaseVerifyFlags flags{.}) const, "verify_chain_async", slot_name slot, slot_callback
SignalProxy_async_callback)
#m4 _CONVERSION(`GAsyncResult*',`const Glib::RefPtr<AsyncResult>&',`Glib::wrap($3, true)')
@@ -105,19 +105,20 @@ dnl// create_certificate_handle_vfunc() shall return a newly allocated string.
#m4
_CONVERSION(`Glib::RefPtr<TlsCertificate>',`GTlsCertificate*',`G_TLS_CERTIFICATE(g_object_ref(Glib::unwrap($3)))')
- _WRAP_VFUNC(Glib::RefPtr<TlsCertificate> lookup_certificate_for_handle(const Glib::ustring& handle, const
Glib::RefPtr<TlsInteraction>& interaction, const Glib::RefPtr<Cancellable>& cancellable{.?},
TlsDatabaseLookupFlags flags{.}), "lookup_certificate_for_handle", errthrow)
- _WRAP_VFUNC(void lookup_certificate_for_handle_async(const Glib::ustring& handle, const
Glib::RefPtr<TlsInteraction>& interaction, const SlotAsyncReady& slot{callback}, const
Glib::RefPtr<Cancellable>& cancellable{.?}, TlsDatabaseLookupFlags flags{.}),
"lookup_certificate_for_handle_async", slot_name slot, slot_callback SignalProxy_async_callback)
+ _WRAP_VFUNC(Glib::RefPtr<TlsCertificate> lookup_certificate_for_handle(const Glib::ustring& handle, const
Glib::RefPtr<TlsInteraction>& interaction, const Glib::RefPtr<Cancellable>& cancellable{.},
TlsDatabaseLookupFlags flags{.}), "lookup_certificate_for_handle", errthrow)
+ _WRAP_VFUNC(void lookup_certificate_for_handle_async(const Glib::ustring& handle, const
Glib::RefPtr<TlsInteraction>& interaction, const SlotAsyncReady& slot{callback}, const
Glib::RefPtr<Cancellable>& cancellable{.}, TlsDatabaseLookupFlags flags{.}),
"lookup_certificate_for_handle_async", slot_name slot, slot_callback SignalProxy_async_callback)
_WRAP_VFUNC(Glib::RefPtr<TlsCertificate> lookup_certificate_for_handle_finish(const
Glib::RefPtr<AsyncResult>& result), "lookup_certificate_for_handle_finish", errthrow)
- _WRAP_VFUNC(Glib::RefPtr<TlsCertificate> lookup_certificate_issuer(const Glib::RefPtr<TlsCertificate>&
certificate, const Glib::RefPtr<TlsInteraction>& interaction, const Glib::RefPtr<Cancellable>&
cancellable{.?}, TlsDatabaseLookupFlags flags{.}), "lookup_certificate_issuer", errthrow)
- _WRAP_VFUNC(void lookup_certificate_issuer_async(const Glib::RefPtr<TlsCertificate>& certificate, const
Glib::RefPtr<TlsInteraction>& interaction, const SlotAsyncReady& slot{callback}, const
Glib::RefPtr<Cancellable>& cancellable{.?}, TlsDatabaseLookupFlags flags{.}),
"lookup_certificate_issuer_async", slot_name slot, slot_callback SignalProxy_async_callback)
+ _WRAP_VFUNC(Glib::RefPtr<TlsCertificate> lookup_certificate_issuer(const Glib::RefPtr<TlsCertificate>&
certificate, const Glib::RefPtr<TlsInteraction>& interaction, const Glib::RefPtr<Cancellable>&
cancellable{.}, TlsDatabaseLookupFlags flags{.}), "lookup_certificate_issuer", errthrow)
+ _WRAP_VFUNC(void lookup_certificate_issuer_async(const Glib::RefPtr<TlsCertificate>& certificate, const
Glib::RefPtr<TlsInteraction>& interaction, const SlotAsyncReady& slot{callback}, const
Glib::RefPtr<Cancellable>& cancellable{.}, TlsDatabaseLookupFlags flags{.}),
"lookup_certificate_issuer_async", slot_name slot, slot_callback SignalProxy_async_callback)
_WRAP_VFUNC(Glib::RefPtr<TlsCertificate> lookup_certificate_issuer_finish(const Glib::RefPtr<AsyncResult>&
result), "lookup_certificate_issuer_finish", errthrow)
-#m4 _CONVERSION(`std::vector< Glib::RefPtr<TlsCertificate> >',`GList*',`g_list_copy(Glib::ListHandler<
Glib::RefPtr<TlsCertificate> >::vector_to_list($3).data())')
+#m4 _CONVERSION(`std::vector< Glib::RefPtr<TlsCertificate> >',`GList*',
+#m4 `g_list_copy_deep(Glib::ListHandler< Glib::RefPtr<TlsCertificate> >::vector_to_list($3).data(),
list_copy_ref, nullptr)')
#m4 _CONVERSION(`GByteArray*',`const Glib::RefPtr<Glib::ByteArray>&',`Glib::wrap($3, true)')
- _WRAP_VFUNC(std::vector< Glib::RefPtr<TlsCertificate> > lookup_certificates_issued_by(const
Glib::RefPtr<Glib::ByteArray>& issuer_raw_dn, const Glib::RefPtr<TlsInteraction>& interaction, const
Glib::RefPtr<Cancellable>& cancellable{.?}, TlsDatabaseLookupFlags flags{.}),
"lookup_certificates_issued_by", errthrow)
- _WRAP_VFUNC(void lookup_certificates_issued_by_async(const Glib::RefPtr<Glib::ByteArray>& issuer_raw_dn,
const Glib::RefPtr<TlsInteraction>& interaction, const SlotAsyncReady& slot{callback}, const
Glib::RefPtr<Cancellable>& cancellable{.?}, TlsDatabaseLookupFlags flags{.}),
"lookup_certificates_issued_by_async", slot_name slot, slot_callback SignalProxy_async_callback)
+ _WRAP_VFUNC(std::vector< Glib::RefPtr<TlsCertificate> > lookup_certificates_issued_by(const
Glib::RefPtr<Glib::ByteArray>& issuer_raw_dn, const Glib::RefPtr<TlsInteraction>& interaction, const
Glib::RefPtr<Cancellable>& cancellable{.}, TlsDatabaseLookupFlags flags{.}), "lookup_certificates_issued_by",
errthrow)
+ _WRAP_VFUNC(void lookup_certificates_issued_by_async(const Glib::RefPtr<Glib::ByteArray>& issuer_raw_dn,
const Glib::RefPtr<TlsInteraction>& interaction, const SlotAsyncReady& slot{callback}, const
Glib::RefPtr<Cancellable>& cancellable{.}, TlsDatabaseLookupFlags flags{.}),
"lookup_certificates_issued_by_async", slot_name slot, slot_callback SignalProxy_async_callback)
_WRAP_VFUNC(std::vector< Glib::RefPtr<TlsCertificate> > lookup_certificates_issued_by_finish(const
Glib::RefPtr<AsyncResult>& result), "lookup_certificates_issued_by_finish", errthrow)
};
diff --git a/gio/src/volumemonitor.hg b/gio/src/volumemonitor.hg
index 24c62fb4..f51ac1c1 100644
--- a/gio/src/volumemonitor.hg
+++ b/gio/src/volumemonitor.hg
@@ -42,13 +42,13 @@ public:
_WRAP_METHOD(static Glib::RefPtr<VolumeMonitor> get(), g_volume_monitor_get)
-#m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Drive> >',`$2($3, Glib::OWNERSHIP_SHALLOW)')
+#m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Drive> >',`$2($3, Glib::OWNERSHIP_DEEP)')
_WRAP_METHOD(Glib::ListHandle< Glib::RefPtr<Drive> > get_connected_drives(),
g_volume_monitor_get_connected_drives)
-#m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Volume> >',`$2($3, Glib::OWNERSHIP_SHALLOW)')
+#m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Volume> >',`$2($3, Glib::OWNERSHIP_DEEP)')
_WRAP_METHOD(Glib::ListHandle< Glib::RefPtr<Volume> > get_volumes(), g_volume_monitor_get_volumes)
-#m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Mount> >',`$2($3, Glib::OWNERSHIP_SHALLOW)')
+#m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Mount> >',`$2($3, Glib::OWNERSHIP_DEEP)')
_WRAP_METHOD(Glib::ListHandle< Glib::RefPtr<Mount> > get_mounts(), g_volume_monitor_get_mounts)
_WRAP_METHOD(Glib::RefPtr<Volume> get_volume_for_uuid(const std::string& uuid),
g_volume_monitor_get_volume_for_uuid, refreturn)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]