Index: modules/evolution.c =================================================================== --- modules/evolution.c (révision 2258) +++ modules/evolution.c (copie de travail) @@ -131,7 +131,20 @@ while ((value_type = va_arg (args, gint)) != -1) { switch (value_type) { - case SUMMARY_TYPE_TIME_T: + case SUMMARY_TYPE_TIME_T: { + time_t value, *dest; + + if (fread (&value, sizeof (time_t), 1, summary) != 1) { + return FALSE; + } + + dest = va_arg (args, time_t*); + + if (dest) { + *dest = g_ntohl (value); + } + break; + } case SUMMARY_TYPE_INT32: { gint32 value, *dest; @@ -456,27 +469,43 @@ read_summary (summary, SUMMARY_TYPE_INT32, &version, - SUMMARY_TYPE_INT32, NULL, - SUMMARY_TYPE_INT32, NULL, - SUMMARY_TYPE_INT32, NULL, + SUMMARY_TYPE_INT32, NULL, /* flags */ + SUMMARY_TYPE_INT32, NULL, /* nextuid */ + SUMMARY_TYPE_TIME_T, NULL, /* time */ SUMMARY_TYPE_INT32, &n_messages, -1); if ((version < 0x100 && version >= 13)) { read_summary (summary, - SUMMARY_TYPE_INT32, NULL, - SUMMARY_TYPE_INT32, NULL, - SUMMARY_TYPE_INT32, NULL, + SUMMARY_TYPE_INT32, NULL, /* unread */ + SUMMARY_TYPE_INT32, NULL, /* deleted */ + SUMMARY_TYPE_INT32, NULL, /* junk */ -1); } - if (version != 0x30c) { + if (version == 0x30c) { read_summary (summary, - SUMMARY_TYPE_INT32, NULL, - SUMMARY_TYPE_INT32, NULL, + SUMMARY_TYPE_UINT32, NULL,/* validity */ -1); - } + } else { + /* version 1 */ + gint32 imap_version; + read_summary (summary, + SUMMARY_TYPE_INT32, &imap_version, /* IMAP version */ + -1); + if (imap_version == 2) { + /* version 2 */ + read_summary (summary, + SUMMARY_TYPE_INT32, NULL, /* mlist */ + -1); + } + + read_summary (summary, + SUMMARY_TYPE_INT32, NULL, /* validity */ + -1); + } + return n_messages; }