summaryrefslogtreecommitdiffstats
path: root/mail/evolution
diff options
context:
space:
mode:
authormarcus <marcus@df743ca5-7f9a-e211-a948-0013205c9059>2004-09-20 04:33:22 +0800
committermarcus <marcus@df743ca5-7f9a-e211-a948-0013205c9059>2004-09-20 04:33:22 +0800
commitfef46653b283686daee0ba3551abb3d19dab884d (patch)
tree08c1948006e58c6c49be470eebe3105cba26a612 /mail/evolution
parent22ec8cf0e6f6189ba81695f7011a72f67d484978 (diff)
downloadmarcuscom-ports-fef46653b283686daee0ba3551abb3d19dab884d.tar
marcuscom-ports-fef46653b283686daee0ba3551abb3d19dab884d.tar.gz
marcuscom-ports-fef46653b283686daee0ba3551abb3d19dab884d.tar.bz2
marcuscom-ports-fef46653b283686daee0ba3551abb3d19dab884d.tar.lz
marcuscom-ports-fef46653b283686daee0ba3551abb3d19dab884d.tar.xz
marcuscom-ports-fef46653b283686daee0ba3551abb3d19dab884d.tar.zst
marcuscom-ports-fef46653b283686daee0ba3551abb3d19dab884d.zip
Add a patch to increase the thread stack size to 1 MB for all major
Evolution operations. This is known to fix crashes with large mailboxes. git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@2871 df743ca5-7f9a-e211-a948-0013205c9059
Diffstat (limited to 'mail/evolution')
-rw-r--r--mail/evolution/Makefile1
-rw-r--r--mail/evolution/files/patch-e-util_e-msgport.c47
2 files changed, 48 insertions, 0 deletions
diff --git a/mail/evolution/Makefile b/mail/evolution/Makefile
index 819138bbc..a80124927 100644
--- a/mail/evolution/Makefile
+++ b/mail/evolution/Makefile
@@ -7,6 +7,7 @@
PORTNAME= evolution
PORTVERSION= 2.0.0
+PORTREVISION= 1
CATEGORIES= mail gnome
MASTER_SITES= ${MASTER_SITE_GNOME}
MASTER_SITE_SUBDIR= sources/${PORTNAME}/2.0
diff --git a/mail/evolution/files/patch-e-util_e-msgport.c b/mail/evolution/files/patch-e-util_e-msgport.c
new file mode 100644
index 000000000..85bd48595
--- /dev/null
+++ b/mail/evolution/files/patch-e-util_e-msgport.c
@@ -0,0 +1,47 @@
+--- e-util/e-msgport.c.orig Wed Jan 14 00:04:04 2004
++++ e-util/e-msgport.c Sun Sep 19 14:01:25 2004
+@@ -921,9 +921,13 @@
+ void e_thread_put(EThread *e, EMsg *msg)
+ {
+ pthread_t id;
++ pthread_attr_t attr;
+ EMsg *dmsg = NULL;
+
+ pthread_mutex_lock(&e->mutex);
++ pthread_attr_init(&attr);
++ /* Give us a 1 MB thread stack size. */
++ pthread_attr_setstacksize(&attr, 0x100000);
+
+ /* the caller forgot to tell us what to do, well, we can't do anything can we */
+ if (e->received == NULL) {
+@@ -962,13 +966,14 @@
+ e_msgport_put(e->server_port, msg);
+ if (e->waiting == 0
+ && g_list_length(e->id_list) < e->queue_limit
+- && pthread_create(&id, NULL, thread_dispatch, e) == 0) {
++ && pthread_create(&id, &attr, thread_dispatch, e) == 0) {
+ struct _thread_info *info = g_malloc0(sizeof(*info));
+ t(printf("created NEW thread %ld\n", id));
+ info->id = id;
+ info->busy = TRUE;
+ e->id_list = g_list_append(e->id_list, info);
+ }
++ pthread_attr_destroy(&attr);
+ pthread_mutex_unlock(&e->mutex);
+ return;
+ }
+@@ -977,12 +982,13 @@
+ if (e->id == E_THREAD_NONE) {
+ int err;
+
+- if ((err = pthread_create(&e->id, NULL, thread_dispatch, e)) != 0) {
++ if ((err = pthread_create(&e->id, &attr, thread_dispatch, e)) != 0) {
+ g_warning("Could not create dispatcher thread, message queued?: %s", strerror(err));
+ e->id = E_THREAD_NONE;
+ }
+ }
+
++ pthread_attr_destroy(&attr);
+ pthread_mutex_unlock(&e->mutex);
+
+ if (dmsg) {