diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | libsylph/folder.c | 6 |
2 files changed, 11 insertions, 3 deletions
@@ -1,3 +1,11 @@ +2014-04-11 + + * libsylph/folder.c: + folder_build_tree() + folder_write_list_recursive(): fixed a bug that new/unread/total + numbers in folderlist.xml was corrupted if sizeof(time_t) is 8 on + 32-bit (such as recent version of mingw32). + 2014-04-10 * libsylph/libsylph-0.def diff --git a/libsylph/folder.c b/libsylph/folder.c index d67d61b1..0299fc5e 100644 --- a/libsylph/folder.c +++ b/libsylph/folder.c @@ -1634,7 +1634,7 @@ static gboolean folder_build_tree(GNode *node, gpointer data) #endif path = attr->value; } else if (!strcmp(attr->name, "mtime")) - mtime = strtoul(attr->value, NULL, 10); + mtime = strtoull(attr->value, NULL, 10); else if (!strcmp(attr->name, "new")) new = atoi(attr->value); else if (!strcmp(attr->name, "unread")) @@ -1945,8 +1945,8 @@ static void folder_write_list_recursive(GNode *node, gpointer data) } fprintf(fp, - " mtime=\"%lu\" new=\"%d\" unread=\"%d\" total=\"%d\"", - item->mtime, item->new, item->unread, item->total); + " mtime=\"%llu\" new=\"%d\" unread=\"%d\" total=\"%d\"", + (guint64)item->mtime, item->new, item->unread, item->total); if (item->account) fprintf(fp, " account_id=\"%d\"", |