Package: evolution Version: 2.0.4-2 Followup-For: Bug #286896 This is actually a bug against evolution-data-server. Please see: http://bugzilla.gnome.org/show_bug.cgi?id=271969
The patch available in that link should work against sid. A slightly massaged patch for evolution-data-server 1.0.4 (in sarge) is attached. To apply, just drop into debian/patches and recompile. Will have to either reboot or logout and run 'bonobo-slay' outside of gnome to have the new evolution-data-server started. Jamie Strandboge -- System Information: Debian Release: 3.1 Architecture: i386 (i686) Kernel: Linux 2.6.8-2-386 Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968) Versions of packages evolution depends on: ii evolution-data-server 1.0.4-1jds1 evolution database backend server ii gconf2 2.8.1-6 GNOME configuration database syste ii gnome-icon-theme 2.8.0-4 GNOME Desktop icon theme ii gtkhtml3.2 3.2.5-1 HTML rendering/editing library - b ii libart-2.0-2 2.3.17-1 Library of functions for 2D graphi ii libatk1.0-0 1.8.0-4 The ATK accessibility toolkit ii libaudiofile0 0.2.6-6 Open-source version of SGI's audio ii libbonobo2-0 2.8.1-2 Bonobo CORBA interfaces library ii libbonoboui2-0 2.8.1-2 The Bonobo UI library ii libc6 2.3.2.ds1-22 GNU C Library: Shared libraries an ii libcompfaceg1 1989.11.11-24 Compress/decompress images for mai ii libdb4.2 4.2.52-18 Berkeley v4.2 Database Libraries [ ii libebook8 1.0.4-1jds1 Client library for evolution addre ii libecal6 1.0.4-1jds1 Client library for evolution calen ii libedataserver3 1.0.4-1jds1 Utily library for evolution data s ii libegroupwise6 1.0.4-1jds1 Client library for accessing group ii libesd-alsa0 [libesd0] 0.2.35-2 Enlightened Sound Daemon (ALSA) - ii libfontconfig1 2.3.1-2 generic font configuration library ii libfreetype6 2.1.7-2.4 FreeType 2 font engine, shared lib ii libgail-common 1.8.4-1 GNOME Accessibility Implementation ii libgail17 1.8.4-1 GNOME Accessibility Implementation ii libgal2.2-1 2.2.5-1 G App Libs (run time library) ii libgal2.2-common 2.2.5-1 G App Libs (common files) ii libgconf2-4 2.8.1-6 GNOME configuration database syste ii libgcrypt11 1.2.0-11.1 LGPL Crypto library - runtime libr ii libglade2-0 1:2.4.2-2 library to load .glade files at ru ii libglib2.0-0 2.6.4-1 The GLib library of C routines ii libgnome-keyring0 0.4.2-1 GNOME keyring services library ii libgnome-pilot2 2.0.12-1.2 Support libraries for gnome-pilot ii libgnome2-0 2.8.1-2 The GNOME 2 library - runtime file ii libgnomecanvas2-0 2.8.0-1 A powerful object-oriented display ii libgnomeprint2.2-0 2.8.2-1 The GNOME 2.2 print architecture - ii libgnomeprintui2.2-0 2.8.2-2 GNOME 2.2 print architecture User ii libgnomeui-0 2.8.1-3 The GNOME 2 libraries (User Interf ii libgnomevfs2-0 2.8.4-4 The GNOME virtual file-system libr ii libgnutls11 1.0.16-13.1 GNU TLS library - runtime library ii libgpg-error0 1.0-1 library for common error values an ii libgtk2.0-0 2.6.4-3 The GTK+ graphical user interface ii libgtkhtml3.2-11 3.2.5-1 HTML rendering/editing library - r ii libice6 4.3.0.dfsg.1-14 Inter-Client Exchange library ii libjpeg62 6b-10 The Independent JPEG Group's JPEG ii libldap2 2.1.30-8 OpenLDAP libraries ii libnspr4 2:1.7.8-1 Netscape Portable Runtime Library ii libnss3 2:1.7.8-1 Network Security Service Libraries ii liborbit2 1:2.12.2-1 libraries for ORBit2 - a CORBA ORB ii libpango1.0-0 1.8.1-1 Layout and rendering of internatio ii libpisock8 0.11.8-10 Library for communicating with a P ii libpisync0 0.11.8-10 Synchronization library for PalmOS ii libpopt0 1.7-5 lib for parsing cmdline parameters ii libsm6 4.3.0.dfsg.1-14 X Window System Session Management ii libsoup2.2-7 2.2.3-2 an HTTP library implementation in ii libtasn1-2 0.2.10-3 Manage ASN.1 structures (runtime) ii libx11-6 4.3.0.dfsg.1-14 X Window System protocol client li ii libxml2 2.6.16-7 GNOME XML library ii xlibs 4.3.0.dfsg.1-14 X Keyboard Extension (XKB) configu ii zlib1g 1:1.2.2-4.sarge.2 compression library - runtime -- no debconf information
--- calendar/backends/file/e-cal-backend-file.c 2004-12-06 09:28:20.000000000 -0500 +++ calendar/backends/file/e-cal-backend-file.c 2005-07-28 19:59:46.844476408 -0400 @@ -1446,7 +1446,7 @@ EXmlHash *ehash; } ECalBackendFileComputeChangesData; -static void +static gboolean e_cal_backend_file_compute_changes_foreach_key (const char *key, gpointer value, gpointer data) { ECalBackendFileComputeChangesData *be_data = data; @@ -1463,8 +1463,9 @@ e_cal_component_set_uid (comp, key); be_data->deletes = g_list_prepend (be_data->deletes, e_cal_component_get_as_string (comp)); - e_xmlhash_remove (be_data->ehash, key); + return TRUE; } + return FALSE; } static ECalBackendSyncStatus @@ -1524,7 +1525,7 @@ be_data.deletes = NULL; be_data.ehash = ehash; - e_xmlhash_foreach_key (ehash, (EXmlHashFunc)e_cal_backend_file_compute_changes_foreach_key, &be_data); + e_xmlhash_foreach_key_remove (ehash, (EXmlHashRemoveFunc)e_cal_backend_file_compute_changes_foreach_key, &be_data); *deletes = be_data.deletes; --- libedataserver/e-xml-hash-utils.c 2005-02-14 10:26:46.000000000 -0500 +++ libedataserver/e-xml-hash-utils.c 2005-07-28 20:03:30.790431448 -0400 @@ -237,6 +237,34 @@ g_hash_table_foreach (hash->objects, foreach_hash_func, &data); } +/* patch */ +typedef struct { + EXmlHashRemoveFunc func; + gpointer user_data; +} foreach_data_remove_t; + +static gboolean +foreach_hash_remove_func (gpointer key, gpointer value, gpointer user_data) +{ + foreach_data_remove_t *data = (foreach_data_remove_t *) user_data; + + return data->func ((const char *) key, (const char *) value, data->user_data); +} + +void +e_xmlhash_foreach_key_remove (EXmlHash *hash, EXmlHashRemoveFunc func, gpointer user_data) +{ + foreach_data_remove_t data; + + g_return_if_fail (hash != NULL); + g_return_if_fail (func != NULL); + + data.func = func; + data.user_data = user_data; + g_hash_table_foreach_remove (hash->objects, foreach_hash_remove_func, &data); +} +/* end patch */ + void e_xmlhash_write (EXmlHash *hash) { --- libedataserver/e-xml-hash-utils.h 2004-05-03 12:44:56.000000000 -0400 +++ libedataserver/e-xml-hash-utils.h 2005-07-28 19:59:46.851475344 -0400 @@ -47,6 +47,7 @@ } EXmlHashStatus; typedef void (* EXmlHashFunc) (const char *key, const char *value, gpointer user_data); +typedef gboolean (* EXmlHashRemoveFunc) (const char *key, const char *value, gpointer user_data); typedef struct EXmlHash EXmlHash; @@ -65,6 +66,10 @@ EXmlHashFunc func, gpointer user_data); +void e_xmlhash_foreach_key_remove (EXmlHash *hash, + EXmlHashRemoveFunc func, + gpointer user_data); + void e_xmlhash_write (EXmlHash *hash); void e_xmlhash_destroy (EXmlHash *hash);