Index: ossp-pkg/lmtp2nntp/lmtp2nntp_msg.c RCS File: /v/ossp/cvs/ossp-pkg/lmtp2nntp/lmtp2nntp_msg.c,v rcsdiff -q -kk '-r1.23' '-r1.24' -u '/v/ossp/cvs/ossp-pkg/lmtp2nntp/lmtp2nntp_msg.c,v' 2>/dev/null --- lmtp2nntp_msg.c 2002/05/28 12:43:14 1.23 +++ lmtp2nntp_msg.c 2002/05/28 13:54:22 1.24 @@ -477,7 +477,7 @@ //FIXME below is the header rewriting engine which must be cleaned up and integrated -static void headerdestroy(headerdata_t *hdC) +static void headerdatadestroy(headerdata_t *hdC) { int i; @@ -492,8 +492,18 @@ if (hdC->ndata == 1) if (hdC->data.s != NULL) free(hdC->data.s); +} + +static void headernamedestroy(headerdata_t *hdC) +{ if (hdC->name != NULL) free(hdC->name); +} + +static void headerdestroy(headerdata_t *hdC) +{ + headerdatadestroy(hdC); + headernamedestroy(hdC); if (hdC->prev != NULL && hdC->prev->next == hdC) throw(0,0,0); if (hdC->next != NULL && hdC->next->prev == hdC) @@ -982,8 +992,8 @@ logbook(ctx->l2, L2_LEVEL_DEBUG, "expansion result '%s'", res_ptr); if (strlen(res_ptr) == 0) { logbook(ctx->l2, L2_LEVEL_DEBUG, "marking deleted - emtpy headername"); - hdNew->name = NULL; - /*FIXME clean up data.s and data.m */ + headerdatadestroy(hdNew); + headernamedestroy(hdNew); hdNew->ndata = 0; } else { @@ -992,7 +1002,8 @@ } if (hrI->val == NULL) { logbook(ctx->l2, L2_LEVEL_DEBUG, "marking deleted - empty headervalue before expansion"); - /*FIXME clean up data.s and data.m */ + headerdatadestroy(hdNew); + headernamedestroy(hdNew); hdNew->ndata = 0; } else { @@ -1016,7 +1027,8 @@ logbook(ctx->l2, L2_LEVEL_DEBUG, "expansion result '%s'", res_ptr); if (strlen(res_ptr) == 0) { logbook(ctx->l2, L2_LEVEL_DEBUG, "marking deleted - empty headervalue after expansion"); - /*FIXME clean up data.s and data.m */ + headerdatadestroy(hdNew); + headernamedestroy(hdNew); hdNew->ndata = 0; } else { @@ -1025,7 +1037,6 @@ } } } - /*FIXME clean up data.m */ headerreplace(hdI, hdNew); if (hdNew->prev == NULL) ctx->msg->hdFirst = hdNew; @@ -1039,11 +1050,11 @@ hdNew->name = strdupex(hrI->name); if (hrI->val == NULL) { logbook(ctx->l2, L2_LEVEL_DEBUG, "marking deleted"); - /*FIXME clean up data.s and data.m */ + headerdatadestroy(hdNew); + headernamedestroy(hdNew); hdNew->ndata = 0; } else { - /*FIXME clean up data.m */ /* expanding variables into header value */ char *res_ptr; logbook(ctx->l2, L2_LEVEL_DEBUG, "expanding variables in header value '%s'", hrI->val); @@ -1053,10 +1064,12 @@ logbook(ctx->l2, L2_LEVEL_DEBUG, "expansion result '%s'", res_ptr); if (strlen(res_ptr) == 0) { logbook(ctx->l2, L2_LEVEL_DEBUG, "marking deleted - empty headervalue after expansion"); - /*FIXME clean up data.s and data.m */ + headerdatadestroy(hdNew); + headernamedestroy(hdNew); hdNew->ndata = 0; } else { + headerdatadestroy(hdNew); hdNew->data.s = res_ptr; hdNew->ndata = 1; }