[glibmm] Gio: Fix ownership of some lists and arrays
- From: Kjell Ahlstedt <kjellahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glibmm] Gio: Fix ownership of some lists and arrays
- Date: Sun, 21 Jul 2019 14:07:35 +0000 (UTC)
commit b704f5a10edb43c128cf759ea38a3e98185c8b40
Author: Kjell Ahlstedt <kjellahlstedt gmail com>
Date: Sun Jul 21 13:38:43 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 | 10 +++++++++-
gio/src/tlsdatabase.hg | 51 ++++++++++++++++++++++++++++++++---------------
gio/src/volumemonitor.hg | 6 +++---
6 files changed, 50 insertions(+), 23 deletions(-)
---
diff --git a/gio/src/drive.hg b/gio/src/drive.hg
index 23ad141c..a89974aa 100644
--- a/gio/src/drive.hg
+++ b/gio/src/drive.hg
@@ -60,7 +60,7 @@ public:
_WRAP_METHOD(bool has_volumes() const, g_drive_has_volumes)
-#m4
_CONVERSION(`GList*',`std::vector<Glib::RefPtr<Volume>>',`Glib::ListHandler<Glib::RefPtr<Volume>>::list_to_vector($3,
Glib::OWNERSHIP_SHALLOW)')
+#m4
_CONVERSION(`GList*',`std::vector<Glib::RefPtr<Volume>>',`Glib::ListHandler<Glib::RefPtr<Volume>>::list_to_vector($3,
Glib::OWNERSHIP_DEEP)')
_WRAP_METHOD(std::vector<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 cf16c62f..9a19e001 100644
--- a/gio/src/mountoperation.hg
+++ b/gio/src/mountoperation.hg
@@ -79,7 +79,7 @@ public:
//TODO: We really need some test to make sure that our use of ArrayHandler is correct. murrayc.
#m4 _CONVERSION(`const std::vector<Glib::ustring>&',`const gchar**',`const_cast<const
gchar**>(Glib::ArrayHandler<Glib::ustring>::vector_to_array($3).data())')
-#m4 _CONVERSION(`const gchar**',`const
std::vector<Glib::ustring>&',`Glib::ArrayHandler<Glib::ustring>::array_to_vector($3, Glib::OWNERSHIP_DEEP)')
+#m4 _CONVERSION(`const gchar**',`const
std::vector<Glib::ustring>&',`Glib::ArrayHandler<Glib::ustring>::array_to_vector($3, Glib::OWNERSHIP_NONE)')
_WRAP_SIGNAL(void ask_question(const Glib::ustring& message, const std::vector<Glib::ustring>& choices),
ask_question)
_WRAP_SIGNAL(void reply(MountOperationResult result), reply)
diff --git a/gio/src/themedicon.hg b/gio/src/themedicon.hg
index 9020e35f..1d9974bb 100644
--- a/gio/src/themedicon.hg
+++ b/gio/src/themedicon.hg
@@ -92,7 +92,7 @@ public:
_WRAP_METHOD(void prepend_name(const Glib::ustring& iconname), g_themed_icon_prepend_name)
_WRAP_METHOD(void append_name(const Glib::ustring& iconname), g_themed_icon_append_name)
- #m4 _CONVERSION(`const gchar*
const*',`std::vector<Glib::ustring>',`Glib::ArrayHandler<Glib::ustring>::array_to_vector($3,
Glib::OWNERSHIP_DEEP)')
+ #m4 _CONVERSION(`const gchar*
const*',`std::vector<Glib::ustring>',`Glib::ArrayHandler<Glib::ustring>::array_to_vector($3,
Glib::OWNERSHIP_NONE)')
_WRAP_METHOD(std::vector<Glib::ustring> 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 4b360575..f351f208 100644
--- a/gio/src/tlsdatabase.ccg
+++ b/gio/src/tlsdatabase.ccg
@@ -21,6 +21,14 @@
#include <giomm/tlsinteraction.h>
#include "slot_async.h"
-
using VerifyFlags = Gio::TlsDatabase::VerifyFlags;
using LookupFlags = Gio::TlsDatabase::LookupFlags;
+
+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 773e6c91..571ff7dd 100644
--- a/gio/src/tlsdatabase.hg
+++ b/gio/src/tlsdatabase.hg
@@ -92,8 +92,8 @@ protected:
#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{.?}, VerifyFlags
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{.?},
VerifyFlags 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{.}, VerifyFlags
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{.},
VerifyFlags flags{.}) const, "verify_chain_async", slot_name slot, slot_callback SignalProxy_async_callback)
#m4 _CONVERSION(`GAsyncResult*',`const Glib::RefPtr<AsyncResult>&',`Glib::wrap($3, true)')
@@ -107,22 +107,41 @@ dnl// because that could be caused by an intermediate empty ustring from an init
#m4 _CONVERSION(`gchar*',`Glib::ustring',`Glib::convert_return_gchar_ptr_to_ustring($3)')
_WRAP_VFUNC(Glib::ustring create_certificate_handle(const Glib::RefPtr<const TlsCertificate>& certificate)
const, "create_certificate_handle")
-#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{.?}, LookupFlags
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{.?}, LookupFlags 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{.?}, LookupFlags 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{.?}, LookupFlags 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())')
+ _WRAP_VFUNC(Glib::RefPtr<TlsCertificate> lookup_certificate_for_handle(
+ const Glib::ustring& handle, const Glib::RefPtr<TlsInteraction>& interaction,
+ const Glib::RefPtr<Cancellable>& cancellable{.}, LookupFlags flags{.}),
+ "lookup_certificate_for_handle", errthrow, refreturn_ctype)
+ _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{.}, LookupFlags
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,
refreturn_ctype)
+
+ _WRAP_VFUNC(Glib::RefPtr<TlsCertificate> lookup_certificate_issuer(
+ const Glib::RefPtr<TlsCertificate>& certificate, const Glib::RefPtr<TlsInteraction>& interaction,
+ const Glib::RefPtr<Cancellable>& cancellable{.}, LookupFlags flags{.}),
+ "lookup_certificate_issuer", errthrow, refreturn_ctype)
+ _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{.}, LookupFlags
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, refreturn_ctype)
+
+#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{.?}, LookupFlags 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{.?}, LookupFlags 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)
+ _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{.}, LookupFlags 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{.}, LookupFlags
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)
};
} // namespace Gio
diff --git a/gio/src/volumemonitor.hg b/gio/src/volumemonitor.hg
index bba03cce..2449a4db 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*',`std::vector<Glib::RefPtr<Drive>>',`Glib::ListHandler<Glib::RefPtr<Drive>>::list_to_vector($3,
Glib::OWNERSHIP_SHALLOW)')
+#m4
_CONVERSION(`GList*',`std::vector<Glib::RefPtr<Drive>>',`Glib::ListHandler<Glib::RefPtr<Drive>>::list_to_vector($3,
Glib::OWNERSHIP_DEEP)')
_WRAP_METHOD(std::vector<Glib::RefPtr<Drive>> get_connected_drives(),
g_volume_monitor_get_connected_drives)
-#m4
_CONVERSION(`GList*',`std::vector<Glib::RefPtr<Volume>>',`Glib::ListHandler<Glib::RefPtr<Volume>>::list_to_vector($3,
Glib::OWNERSHIP_SHALLOW)')
+#m4
_CONVERSION(`GList*',`std::vector<Glib::RefPtr<Volume>>',`Glib::ListHandler<Glib::RefPtr<Volume>>::list_to_vector($3,
Glib::OWNERSHIP_DEEP)')
_WRAP_METHOD(std::vector<Glib::RefPtr<Volume>> get_volumes(), g_volume_monitor_get_volumes)
-#m4
_CONVERSION(`GList*',`std::vector<Glib::RefPtr<Mount>>',`Glib::ListHandler<Glib::RefPtr<Mount>>::list_to_vector($3,
Glib::OWNERSHIP_SHALLOW)')
+#m4
_CONVERSION(`GList*',`std::vector<Glib::RefPtr<Mount>>',`Glib::ListHandler<Glib::RefPtr<Mount>>::list_to_vector($3,
Glib::OWNERSHIP_DEEP)')
_WRAP_METHOD(std::vector<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]