* New upstream release.

- fix message deleting in search folers.                    closes: #585794
  - fix crash on i386 with largefile.                         closes: #585921
* debian/patches
  - 03_fix-segfault-on-some-mails-display, 
    04_fix-crash-when-viewing-closing-mails-quickly  dropped, 
    included upstream.
* debian/control:
  - update build-deps to 2.30.2.
  - update debhelper build-dep to 7.2.3 for dh_bugfiles.

git-svn-id: file:///svn/pkg-evolution/unstable/evolution@1662 ed03ce00-e4f4-0310-9448-ee38221cb277
This commit is contained in:
Yves-Alexis Perez
2010-06-21 05:55:30 +00:00
parent 5d1e904396
commit 41027952ff
5 changed files with 25 additions and 192 deletions

14
debian/changelog vendored
View File

@ -1,11 +1,21 @@
evolution (2.30.1.2-4) unstable; urgency=low
evolution (2.30.2-1) UNRELEASED; urgency=low
* New upstream release.
- fix message deleting in search folers. closes: #585794
- fix crash on i386 with largefile. closes: #585921
* debian/rules:
- install some information on bug reporting
* debian/bug-presubj: warn user that she should report upstream issues
directly to upstream bugzilla because of lack of time and manpower.
* debian/patches
- 03_fix-segfault-on-some-mails-display,
04_fix-crash-when-viewing-closing-mails-quickly dropped,
included upstream.
* debian/control:
- update build-deps to 2.30.2.
- update debhelper build-dep to 7.2.3 for dh_bugfiles.
-- Yves-Alexis Perez <corsac@debian.org> Thu, 17 Jun 2010 08:06:35 +0200
-- Yves-Alexis Perez <corsac@debian.org> Mon, 21 Jun 2010 00:19:36 +0200
evolution (2.30.1.2-3) unstable; urgency=low

24
debian/control vendored
View File

@ -14,7 +14,7 @@ Dm-Upload-Allowed: yes
Homepage: http://www.gnome.org/projects/evolution/
Vcs-Svn: svn://svn.debian.org/svn/pkg-evolution/unstable/evolution
Vcs-Browser: http://svn.debian.org/wsvn/pkg-evolution/unstable/evolution
Build-Depends: debhelper (>= 5.0.0),
Build-Depends: debhelper (>= 7.2.3~),
cdbs (>= 0.4.52),
dpkg-dev (>= 1.14.16),
scrollkeeper,
@ -34,22 +34,22 @@ Build-Depends: debhelper (>= 5.0.0),
libnss3-dev,
psmisc,
libglib2.0-dev (>= 2.22.0),
evolution-data-server-dev (>= 2.30.1),
evolution-data-server-dev (>= 2.30.2),
evolution-data-server-dev (<< 2.31),
libgtk2.0-dev (>= 2.18.0),
libgnomecanvas2-dev,
libxml2-dev,
libgconf2-dev,
libcamel1.2-dev (>= 2.30.1),
libedataserver1.2-dev (>= 2.30.1),
libegroupwise1.2-dev (>= 2.30.1),
libedataserverui1.2-dev (>= 2.30.1),
libebackend1.2-dev (>= 2.30.1),
libgdata1.2-dev (>= 2.30.1),
libgdata-google1.2-dev (>= 2.30.1),
libcamel1.2-dev (>= 2.30.2),
libedataserver1.2-dev (>= 2.30.2),
libegroupwise1.2-dev (>= 2.30.2),
libedataserverui1.2-dev (>= 2.30.2),
libebackend1.2-dev (>= 2.30.2),
libgdata1.2-dev (>= 2.30.2),
libgdata-google1.2-dev (>= 2.30.2),
libgnome2-dev,
libecal1.2-dev (>= 2.30.1),
libebook1.2-dev (>= 2.30.1),
libecal1.2-dev (>= 2.30.2),
libebook1.2-dev (>= 2.30.2),
libdbus-glib-1-dev,
libnm-glib-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386],
libnotify-dev (>= 0.3.0),
@ -76,7 +76,7 @@ Architecture: any
Depends: ${shlibs:Depends},
${misc:Depends},
evolution-common (= ${source:Version}),
evolution-data-server (>= 2.30.1),
evolution-data-server (>= 2.30.2),
evolution-data-server (<< 2.31),
gnome-icon-theme (>= 2.19.92),
dbus

View File

@ -1,29 +0,0 @@
commit cacfd2114e7dd56cc12613d625bac450cc69b4ae
Author: Michel Dänzer <michel@daenzer.net>
Date: Wed Mar 24 16:51:31 2010 +0100
Bug 612082 - Crash in em_format_snoop_type
This is not a final solution to the bug, but merely avoids a NULL
pointer dereference which is likely a symptom of a deeper problem.
Signed-off-by: Michel Dänzer <michel@daenzer.net>
diff --git a/em-format/em-format.c b/em-format/em-format.c
index 19913ef..a2034b4 100644
--- a/em-format/em-format.c
+++ b/em-format/em-format.c
@@ -2015,10 +2015,11 @@ em_format_snoop_type (CamelMimePart *part)
dw = camel_medium_get_content_object((CamelMedium *)part);
if (!camel_data_wrapper_is_offline(dw)) {
- CamelStreamMem *mem = (CamelStreamMem *)camel_stream_mem_new();
+ GByteArray *buffer = g_byte_array_new ();
+ CamelStreamMem *mem = (CamelStreamMem *)camel_stream_mem_new_with_byte_array(buffer);
if (camel_data_wrapper_decode_to_stream(dw, (CamelStream *)mem) > 0) {
- gchar *ct = g_content_type_guess (filename, mem->buffer->data, mem->buffer->len, NULL);
+ gchar *ct = g_content_type_guess (filename, buffer->data, buffer->len, NULL);
if (ct)
magic_type = g_content_type_get_mime_type (ct);

View File

@ -1,148 +0,0 @@
commit 4a2343cb34498c701e71679e3c50c9fc81dd5b80
Author: Matthew Barnes <mbarnes@redhat.com>
Date: Tue May 18 08:07:19 2010 -0400
Bug 618902 - Crash when viewing/closing messages quickly
Closing an EMailBrowser window causes it to be disposed immediately,
but ongoing async operations still hold an EMailBrowser reference --
in particular, regenerating the internal message list and fetching a
mail message. The callback functions for these operations were not
equipped to deal with the disposed-but-not-yet-finalized object.
diff --git a/mail/e-mail-browser.c b/mail/e-mail-browser.c
index cf5176f..cd7ecd3 100644
--- a/mail/e-mail-browser.c
+++ b/mail/e-mail-browser.c
@@ -445,7 +445,8 @@ mail_browser_dispose (GObject *object)
}
if (priv->message_list != NULL) {
- g_object_unref (priv->message_list);
+ /* This will cancel a regen operation. */
+ gtk_widget_destroy (priv->message_list);
priv->message_list = NULL;
}
diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c
index 53d45fd..bb668bf 100644
--- a/mail/e-mail-reader.c
+++ b/mail/e-mail-reader.c
@@ -52,7 +52,8 @@
#include "mail/message-list.h"
#define E_MAIL_READER_GET_PRIVATE(obj) \
- (mail_reader_get_private (G_OBJECT (obj)))
+ ((EMailReaderPrivate *) g_object_get_qdata \
+ (G_OBJECT (obj), quark_private))
typedef struct _EMailReaderPrivate EMailReaderPrivate;
@@ -92,31 +93,24 @@ static GQuark quark_private;
static guint signals[LAST_SIGNAL];
static void
-mail_reader_finalize (EMailReaderPrivate *priv)
+mail_reader_destroy (GObject *object)
{
- if (priv->message_selected_timeout_id > 0)
- g_source_remove (priv->message_selected_timeout_id);
-
- g_free (priv->mark_read_message_uid);
-
- g_slice_free (EMailReaderPrivate, priv);
+ /* This will free the private struct. */
+ g_object_set_qdata (object, quark_private, NULL);
}
-static EMailReaderPrivate *
-mail_reader_get_private (GObject *object)
+static void
+mail_reader_private_free (EMailReaderPrivate *priv)
{
- EMailReaderPrivate *priv;
+ if (priv->message_selected_timeout_id > 0)
+ g_source_remove (priv->message_selected_timeout_id);
- priv = g_object_get_qdata (object, quark_private);
+ if (priv->retrieving_message_operation_id > 0)
+ mail_msg_cancel (priv->retrieving_message_operation_id);
- if (G_UNLIKELY (priv == NULL)) {
- priv = g_slice_new0 (EMailReaderPrivate);
- g_object_set_qdata_full (
- object, quark_private, priv,
- (GDestroyNotify) mail_reader_finalize);
- }
+ g_free (priv->mark_read_message_uid);
- return priv;
+ g_slice_free (EMailReaderPrivate, priv);
}
static void
@@ -1830,6 +1824,14 @@ mail_reader_message_loaded_cb (CamelFolder *folder,
priv = E_MAIL_READER_GET_PRIVATE (reader);
+ /* If the private struct is NULL, the EMailReader was destroyed
+ * while we were loading the message and we're likely holding the
+ * last reference. Nothing to do but drop the reference. */
+ if (priv == NULL) {
+ g_object_unref (reader);
+ return;
+ }
+
html_display = e_mail_reader_get_html_display (reader);
message_list = e_mail_reader_get_message_list (reader);
@@ -2551,7 +2553,7 @@ e_mail_reader_get_type (void)
type = g_type_register_static (
G_TYPE_INTERFACE, "EMailReader", &type_info, 0);
- g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
+ g_type_interface_add_prerequisite (type, GTK_TYPE_OBJECT);
}
return type;
@@ -2726,6 +2728,19 @@ e_mail_reader_init (EMailReader *reader)
g_signal_connect_swapped (
message_list, "selection-change",
G_CALLBACK (e_mail_reader_changed), reader);
+
+ /* Install a private struct for storing things like flags and
+ * timeout and asynchronous operation IDs. We delete it when
+ * the EMailReader is destroyed rather than finalized so that
+ * asynchronous callbacks holding a reference can detect that
+ * the reader has been destroyed and drop their reference. */
+ g_object_set_qdata_full (
+ G_OBJECT (reader), quark_private,
+ g_slice_new0 (EMailReaderPrivate),
+ (GDestroyNotify) mail_reader_private_free);
+ g_signal_connect (
+ reader, "destroy",
+ G_CALLBACK (mail_reader_destroy), NULL);
}
void
diff --git a/mail/message-list.c b/mail/message-list.c
index ed12365..c736108 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -4900,7 +4900,7 @@ mail_regen_list (MessageList *ml, const gchar *search, const gchar *hideexpr, Ca
#endif
m = mail_msg_new (&regen_list_info);
- m->ml = ml;
+ m->ml = g_object_ref (ml);
m->search = g_strdup (search);
m->hideexpr = g_strdup (hideexpr);
m->changes = changes;
@@ -4908,7 +4908,6 @@ mail_regen_list (MessageList *ml, const gchar *search, const gchar *hideexpr, Ca
m->hidedel = ml->hidedeleted;
m->hidejunk = ml->hidejunk;
m->thread_subject = gconf_client_get_bool (gconf, "/apps/evolution/mail/display/thread_subject", NULL);
- g_object_ref(ml);
m->folder = ml->folder;
camel_object_ref(m->folder);
m->last_row = -1;

2
debian/rules vendored
View File

@ -41,5 +41,5 @@ clean::
debconf-updatepo
find -name '*.schemas' | xargs rm -f
install::
common-binary-post-install-indep::
dh_bugfiles -A