Hello together, here is the second version of the patch which additional includes a prototype for the newley introduced mutt_free_buffer function. Thomas
diff -Nru a/muttlib.c b/muttlib.c --- a/muttlib.c 2004-08-08 14:01:00 +02:00 +++ b/muttlib.c 2004-08-08 14:01:00 +02:00 @@ -638,17 +638,24 @@ { if (!*p) return; rfc822_free_address (&(*p)->return_path); + rfc822_free_address (&(*p)->from); rfc822_free_address (&(*p)->to); rfc822_free_address (&(*p)->cc); rfc822_free_address (&(*p)->bcc); rfc822_free_address (&(*p)->sender); - rfc822_free_address (&(*p)->from); rfc822_free_address (&(*p)->reply_to); rfc822_free_address (&(*p)->mail_followup_to); + + FREE (&(*p)->list_post); FREE (&(*p)->subject); + /* real_subj is just an offset to subject and shouldn't be freed */ FREE (&(*p)->message_id); FREE (&(*p)->supersedes); FREE (&(*p)->date); + FREE (&(*p)->x_label); + + mutt_free_buffer (&(*p)->spam); + mutt_free_list (&(*p)->references); mutt_free_list (&(*p)->in_reply_to); mutt_free_list (&(*p)->userhdrs); @@ -1354,6 +1361,15 @@ void mutt_buffer_addch (BUFFER* buf, char c) { mutt_buffer_add (buf, &c, 1); +} + +void mutt_free_buffer (BUFFER **p) +{ + if (!*p) return; + + FREE(&(*p)->data); + /* dptr is just an offset to data and shouldn't be freed */ + FREE(p); } /* dynamically grows a BUFFER to accomodate s, in increments of 128 bytes. diff -Nru a/protos.h b/protos.h --- a/protos.h 2004-08-08 14:01:00 +02:00 +++ b/protos.h 2004-08-08 14:01:00 +02:00 @@ -38,6 +38,7 @@ void mutt_buffer_add (BUFFER*, const char*, size_t); void mutt_buffer_addstr (BUFFER*, const char*); void mutt_buffer_addch (BUFFER*, char); +void mutt_free_buffer (BUFFER **); #define mutt_system(x) _mutt_system(x,0) int _mutt_system (const char *, int);
Attachment:
pgpjcxklpmFCl.pgp
Description: PGP signature