[geary/geary-0.6] Patch major memory leak due to GMime bindings
- From: Jim Nelson <jnelson src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary/geary-0.6] Patch major memory leak due to GMime bindings
- Date: Wed, 20 Aug 2014 19:44:43 +0000 (UTC)
commit c6613887e3c8d830f8107649fbf81dcaba14b581
Author: Jim Nelson <jim yorba org>
Date: Wed Jul 30 19:02:11 2014 -0700
Patch major memory leak due to GMime bindings
Discovered a few binding problems while working on another issue,
in particular gmime_parser_construct_message()'s return object
not being freed, which can hold an entire message (attachments and
all) in memory.
bindings/vapi/gmime-2.6.vapi | 18 +++++++++++-------
bindings/vapi/gmime-2.6/gmime-2.6.files | 2 +-
bindings/vapi/gmime-2.6/gmime-2.6.metadata | 9 ++++++++-
3 files changed, 20 insertions(+), 9 deletions(-)
---
diff --git a/bindings/vapi/gmime-2.6.vapi b/bindings/vapi/gmime-2.6.vapi
index c7769fc..64bedb6 100644
--- a/bindings/vapi/gmime-2.6.vapi
+++ b/bindings/vapi/gmime-2.6.vapi
@@ -173,7 +173,7 @@ namespace GMime {
[CCode (cname = "g_mime_content_type_set_params")]
public void set_params (GMime.Param @params);
[CCode (cname = "g_mime_content_type_to_string")]
- public unowned string to_string ();
+ public string to_string ();
}
[CCode (cheader_filename = "gmime/gmime.h")]
public class CryptoContext : GLib.Object {
@@ -546,7 +546,7 @@ namespace GMime {
[CCode (cname = "g_mime_message_get_date")]
public void get_date (out ulong date, out int tz_offset);
[CCode (cname = "g_mime_message_get_date_as_string")]
- public unowned string get_date_as_string ();
+ public string get_date_as_string ();
[CCode (cname = "g_mime_message_get_message_id")]
public unowned string get_message_id ();
[CCode (cname = "g_mime_message_get_mime_part")]
@@ -639,9 +639,9 @@ namespace GMime {
[CCode (cname = "g_mime_multipart_remove")]
public virtual bool remove (GMime.Object part);
[CCode (cname = "g_mime_multipart_remove_at")]
- public virtual unowned GMime.Object remove_at (int index);
+ public virtual GMime.Object remove_at (int index);
[CCode (cname = "g_mime_multipart_replace")]
- public unowned GMime.Object replace (int index, GMime.Object replacement);
+ public GMime.Object replace (int index, GMime.Object replacement);
[CCode (cname = "g_mime_multipart_set_boundary")]
public virtual void set_boundary (string boundary);
[CCode (cname = "g_mime_multipart_set_postface")]
@@ -698,7 +698,7 @@ namespace GMime {
[CCode (cname = "g_mime_object_get_header_list")]
public unowned GMime.HeaderList get_header_list ();
[CCode (cname = "g_mime_object_get_headers")]
- public virtual unowned string get_headers ();
+ public virtual string get_headers ();
[CCode (cname = "g_mime_object_prepend_header")]
public virtual void prepend_header (string header, string value);
[CCode (cname = "g_mime_object_register_type")]
@@ -758,9 +758,9 @@ namespace GMime {
[CCode (cname = "g_mime_parser_new", has_construct_function = false)]
public Parser ();
[CCode (cname = "g_mime_parser_construct_message")]
- public unowned GMime.Message? construct_message ();
+ public GMime.Message? construct_message ();
[CCode (cname = "g_mime_parser_construct_part")]
- public unowned GMime.Object construct_part ();
+ public GMime.Object? construct_part ();
[CCode (cname = "g_mime_parser_eos")]
public bool eos ();
[CCode (cname = "g_mime_parser_get_from")]
@@ -1016,6 +1016,8 @@ namespace GMime {
public bool owner;
[CCode (cname = "g_mime_stream_file_new", has_construct_function = false, type =
"GMimeStream*")]
public StreamFile (GLib.FileStream fp);
+ [CCode (cname = "g_mime_stream_file_new_for_path", has_construct_function = false, type =
"GMimeStream*")]
+ public StreamFile.for_path (string path, string mode);
[CCode (cname = "g_mime_stream_file_get_owner")]
public bool get_owner ();
[CCode (cname = "g_mime_stream_file_set_owner")]
@@ -1040,6 +1042,8 @@ namespace GMime {
public bool owner;
[CCode (cname = "g_mime_stream_fs_new", has_construct_function = false, type =
"GMimeStream*")]
public StreamFs (int fd);
+ [CCode (cname = "g_mime_stream_fs_new_for_path", has_construct_function = false, type =
"GMimeStream*")]
+ public StreamFs.for_path (string path, int flags, int mode);
[CCode (cname = "g_mime_stream_fs_get_owner")]
public bool get_owner ();
[CCode (cname = "g_mime_stream_fs_set_owner")]
diff --git a/bindings/vapi/gmime-2.6/gmime-2.6.files b/bindings/vapi/gmime-2.6/gmime-2.6.files
index 5d11dce..425d3d3 100644
--- a/bindings/vapi/gmime-2.6/gmime-2.6.files
+++ b/bindings/vapi/gmime-2.6/gmime-2.6.files
@@ -1,2 +1,2 @@
include/gmime-2.6/
-lib/libgmime-2.6.so
+lib/x86_64-linux-gnu/libgmime-2.6.so
diff --git a/bindings/vapi/gmime-2.6/gmime-2.6.metadata b/bindings/vapi/gmime-2.6/gmime-2.6.metadata
index 9ee2701..2310a8b 100644
--- a/bindings/vapi/gmime-2.6/gmime-2.6.metadata
+++ b/bindings/vapi/gmime-2.6/gmime-2.6.metadata
@@ -3,16 +3,22 @@ GMime lower_case_cprefix="gmime_" cheader_filename="gmime/gmime.h"
GMimeObject abstract="1"
GMimeStream abstract="1"
+g_mime_content_type_to_string transfer_ownership="1"
g_mime_header_list_get_iter.iter is_out="1"
g_mime_message_get_date.date is_out="1"
g_mime_message_get_date.tz_offset is_out="1"
+g_mime_message_get_date_as_string transfer_ownership="1"
g_mime_message_get_mime_part is_nullable="1"
+g_mime_multipart_remove_at is_nullable="1" transfer_ownership="1"
+g_mime_multipart_replace is_nullable="1" transfer_ownership="1"
g_mime_object_get_content_disposition nullable="1"
g_mime_object_get_content_type nullable="1"
g_mime_object_get_content_type_parameter nullable="1"
+g_mime_object_get_headers transfer_ownership="1"
g_mime_object_to_string transfer_ownership="1"
g_mime_param_next name="get_next"
-g_mime_parser_construct_message nullable="1"
+g_mime_parser_construct_message nullable="1" transfer_ownership="1"
+g_mime_parser_construct_part nullable="1" transfer_ownership="1"
g_mime_part_get_content_description nullable="1"
g_mime_part_get_content_location nullable="1"
g_mime_part_get_content_id nullable="1"
@@ -50,6 +56,7 @@ GMimeFilter.outpre is_protected="1"
GMimeFilter.outptr type_name="char*" is_protected="1"
GMimeFilter.outreal type_name="char*" is_protected="1"
GMimeFilter.outsize hidden="1" is_protected="1"
+GMimeFilterBest.charset hidden="1"
g_mime_filter_backup.data is_array="1" array_length_pos="1.1" array_length_type="size_t" type_name="char[]"
g_mime_filter_backup.length hidden="1"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]