]> code.citadel.org Git - citadel.git/blobdiff - citadel/server/msgbase.c
Found a place where CM_SetAsField() was owning db memory.
[citadel.git] / citadel / server / msgbase.c
index 7ed1b8c36541d7bd9ef3358971468685e72417fb..22d9d84c5d836eb2934d9d930e059a70cf02e057 100644 (file)
@@ -229,7 +229,7 @@ void CM_PrependToField(struct CtdlMessage *Msg, eMsgField which, const char *buf
 }
 
 
-// wtf?
+// This is like CM_SetField() except the caller is transferring ownership of the supplied memory to the message
 void CM_SetAsField(struct CtdlMessage *Msg, eMsgField which, char **buf, long length) {
        if (Msg->cm_fields[which] != NULL) {
                free (Msg->cm_fields[which]);
@@ -1122,7 +1122,7 @@ struct CtdlMessage *CtdlFetchMessage(long msgnum, int with_body) {
        if ( (CM_IsEmpty(ret, eMesageText)) && (with_body) ) {
                dmsgtext = cdb_fetch(CDB_BIGMSGS, &msgnum, sizeof(long));
                if (dmsgtext.ptr != NULL) {
-                       CM_SetAsField(ret, eMesageText, &dmsgtext.ptr, dmsgtext.len - 1);
+                       CM_SetField(ret, eMesageText, dmsgtext.ptr);
                }
        }
        if (CM_IsEmpty(ret, eMesageText)) {