+2007-07-10 [paul] 2.10.0cvs14
+
+ * src/editaddress_other_attributes_ldap.c
+ * src/ldapupdate.c
+ fix crash on selecting 'other attributes' combo
+ for either a new entry or an old entry with no
+ existing attributes.
+ fix bug on editing multiple attributes which
+ resulted them all having the value of the last
+ one changed.
+ Thanks to Colin
+
2007-07-10 [colin] 2.10.0cvs13
* src/editaddress.c
( cvs diff -u -r 1.155.2.66 -r 1.155.2.67 src/Makefile.am; cvs diff -u -r 1.5.2.19 -r 1.5.2.20 src/exporthtml.c; cvs diff -u -r 1.28.2.35 -r 1.28.2.36 src/mbox.c; cvs diff -u -r 1.16.2.51 -r 1.16.2.52 src/msgcache.c; cvs diff -u -r 1.1.2.44 -r 1.1.2.45 src/prefs_summaries.c; cvs diff -u -r 1.3.2.48 -r 1.3.2.49 src/prefs_themes.c; cvs diff -u -r 1.47.2.43 -r 1.47.2.44 src/procheader.c; cvs diff -u -r 1.24.2.14 -r 1.24.2.15 src/common/Makefile.am; cvs diff -u -r 1.6.2.11 -r 1.6.2.12 src/common/log.c; cvs diff -u -r 1.1.2.7 -r 1.1.2.8 src/common/timing.h; cvs diff -u -r 1.36.2.104 -r 1.36.2.105 src/common/utils.c; cvs diff -u -r 1.20.2.46 -r 1.20.2.47 src/common/utils.h; diff -u /dev/null src/common/w32_account.c; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/common/w32lib.h; cvs diff -u -r 1.20.2.14 -r 1.20.2.15 src/gtk/Makefile.am; cvs diff -u -r 1.2.2.18 -r 1.2.2.19 src/gtk/colorlabel.c; cvs diff -u -r 1.1.2.8 -r 1.1.2.9 src/plugins/pgpcore/Makefile.am; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpcore/claws.def; cvs diff -u -r 1.1.2.26 -r 1.1.2.27 src/plugins/pgpcore/passphrase.c; cvs diff -u -r 1.1.2.11 -r 1.1.2.12 src/plugins/pgpcore/pgp_viewer.c; cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/plugins/pgpcore/plugin.def; cvs diff -u -r 1.1.2.45 -r 1.1.2.46 src/plugins/pgpcore/sgpgme.c; cvs diff -u -r 1.1.2.7 -r 1.1.2.8 src/plugins/pgpinline/Makefile.am; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpinline/claws.def; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpinline/mypgpcore.def; cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/plugins/pgpinline/plugin.def; cvs diff -u -r 1.1.2.9 -r 1.1.2.10 src/plugins/pgpmime/Makefile.am; cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/plugins/pgpmime/claws.def; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/plugins/pgpmime/mypgpcore.def; cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/plugins/pgpmime/plugin.def; ) > 2.10.0cvs11.patchset
( cvs diff -u -r 1.155.2.67 -r 1.155.2.68 src/Makefile.am; cvs diff -u -r 1.13.2.11 -r 1.13.2.12 src/addritem.c; cvs diff -u -r 1.12.2.9 -r 1.12.2.10 src/addritem.h; cvs diff -u -r 1.14.2.24 -r 1.14.2.25 src/editaddress.c; diff -u /dev/null src/editaddress_other_attributes_ldap.c; diff -u /dev/null src/editaddress_other_attributes_ldap.h; cvs diff -u -r 1.8.2.21 -r 1.8.2.22 src/editldap.c; cvs diff -u -r 1.2.2.9 -r 1.2.2.10 src/ldapctrl.c; cvs diff -u -r 1.1.4.10 -r 1.1.4.11 src/ldapctrl.h; cvs diff -u -r 1.1.2.7 -r 1.1.2.8 src/ldapupdate.c; ) > 2.10.0cvs12.patchset
( cvs diff -u -r 1.14.2.25 -r 1.14.2.26 src/editaddress.c; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/editaddress_other_attributes_ldap.h; cvs diff -u -r 1.1.2.8 -r 1.1.2.9 src/ldapupdate.c; ) > 2.10.0cvs13.patchset
+( cvs diff -u -r 1.1.2.1 -r 1.1.2.2 src/editaddress_other_attributes_ldap.c; cvs diff -u -r 1.1.2.9 -r 1.1.2.10 src/ldapupdate.c; ) > 2.10.0cvs14.patchset
gint row = personEditDlg->rowIndAttrib;
UserAttribute *attrib = gtk_clist_get_row_data(clist, row);
gint option = gtk_option_menu_get_history(opt_menu);
+ const gchar *str = attrib ? attrib->name:"";
+ g_return_if_fail (option < ATTRIBUTE_SIZE);
/* A corresponding attribute in contact does not match selected option */
- if (strcmp(ATTRIBUTE[option], attrib->name) != 0) {
+ if (strcmp(ATTRIBUTE[option], str) != 0) {
gtk_widget_set_sensitive(personEditDlg->attrib_add, TRUE);
gtk_widget_set_sensitive(personEditDlg->attrib_mod, TRUE);
gtk_widget_set_sensitive(personEditDlg->attrib_del, FALSE);
*/
void ldapsvr_handle_other_attributes(LDAP *ld, LdapServer *server, char *dn, GHashTable *contact) {
GList *node;
- gboolean CHECKED_ATTRIBUTE[ATTRIBUTE_SIZE];
+ gboolean CHECKED_ATTRIBUTE[ATTRIBUTE_SIZE + 1];
LDAPMod *mods[ATTRIBUTE_SIZE + 1];
LDAPMod modarr[ATTRIBUTE_SIZE];
gint cnt = 0;
- char *attr[] = {NULL, NULL};
+ char *attr[ATTRIBUTE_SIZE + 1][2];
int mod_op, rc, i;
g_return_if_fail(server != NULL || dn != NULL || contact != NULL);
- for (i = 0; i < ATTRIBUTE_SIZE; i++)
+ for (i = 0; i <= ATTRIBUTE_SIZE; i++) {
CHECKED_ATTRIBUTE[i] = FALSE;
+ attr[i][0] = attr[i][1] = NULL;
+ }
node = g_hash_table_lookup(contact , "attribute");
while (node) {
AttrKeyValue *item = node->data;
*/
}
else {
- SETMOD(mods[cnt], modarr[cnt], mod_op, g_strdup(item->key), attr, g_strdup(item->value));
+ SETMOD(mods[cnt], modarr[cnt], mod_op, g_strdup(item->key), attr[cnt], g_strdup(item->value));
cnt++;
CHECKED_ATTRIBUTE[index] = TRUE;
}
if (ldapsvr_check_search_attributes(attribs, (char *) ATTRIBUTE[i])) {
mod_op = ldapsvr_deside_operation(ld, server, dn, (char *) ATTRIBUTE[i], "");
if (mod_op == LDAP_MOD_DELETE) {
- SETMOD(mods[cnt], modarr[cnt], LDAP_MOD_DELETE, g_strdup((char *) ATTRIBUTE[i]), attr, NULL);
+ SETMOD(mods[cnt], modarr[cnt], LDAP_MOD_DELETE, g_strdup((char *) ATTRIBUTE[i]), attr[cnt], NULL);
cnt++;
}
}