X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=citadel%2Fmodules%2Fimap%2Fserv_imap.c;fp=citadel%2Fmodules%2Fimap%2Fserv_imap.c;h=1290276e27fec9c17980cf8fe112fce2d33efc21;hp=168c7e71a23bbaa6c2e138c0a13b7d4909d3bd3e;hb=dc1d15a3a02aadae3c441f22d9db1601295f1f47;hpb=102fdb5168aadb6f8d0a0c4ccd0f09a0bbd0fd90 diff --git a/citadel/modules/imap/serv_imap.c b/citadel/modules/imap/serv_imap.c index 168c7e71a..1290276e2 100644 --- a/citadel/modules/imap/serv_imap.c +++ b/citadel/modules/imap/serv_imap.c @@ -320,10 +320,11 @@ void imap_load_msgids(void) /* Load the message list */ cdbfr = cdb_fetch(CDB_MSGLISTS, &CC->room.QRnumber, sizeof(long)); if (cdbfr != NULL) { - Imap->msgids = malloc(cdbfr->len); - memcpy(Imap->msgids, cdbfr->ptr, cdbfr->len); + Imap->msgids = (long*)cdbfr->ptr; Imap->num_msgs = cdbfr->len / sizeof(long); Imap->num_alloc = cdbfr->len / sizeof(long); + cdbfr->ptr = NULL; + cdbfr->len = 0; cdb_free(cdbfr); } @@ -371,14 +372,10 @@ void imap_rescan_msgids(void) */ cdbfr = cdb_fetch(CDB_MSGLISTS, &CC->room.QRnumber, sizeof(long)); if (cdbfr != NULL) { - msglist = malloc(cdbfr->len + 1); - if (msglist == NULL) { - IMAPM_syslog(LOG_CRIT, "malloc() failed"); - CC->kill_me = KILLME_MALLOC_FAILED; - return; - } - memcpy(msglist, cdbfr->ptr, (size_t)cdbfr->len); + msglist = (long*)cdbfr->ptr; + cdbfr->ptr = NULL; num_msgs = cdbfr->len / sizeof(long); + cdbfr->len = 0; cdb_free(cdbfr); } else { num_msgs = 0; @@ -417,9 +414,8 @@ void imap_rescan_msgids(void) (Imap->num_msgs - i))); memmove(&Imap->flags[i], &Imap->flags[i + 1], - (sizeof(long) * + (sizeof(unsigned int) * (Imap->num_msgs - i))); - --i; }