From 323984a1aec2a1f1d411afe4bbfe17a874844c93 Mon Sep 17 00:00:00 2001 From: Pierre Joye Date: Tue, 28 Apr 2009 12:43:10 +0000 Subject: [PATCH] - MFH: SEARCHPGM struct has to be freed --- ext/imap/php_imap.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c index f1e4e7d3f9..a2ba16df7c 100644 --- a/ext/imap/php_imap.c +++ b/ext/imap/php_imap.c @@ -3685,6 +3685,7 @@ PHP_FUNCTION(imap_search) char *search_criteria; MESSAGELIST *cur; int argc = ZEND_NUM_ARGS(); + SEARCHPGM *pgm = NIL; if (argc < 2 || argc > 4 || zend_get_parameters_ex(argc, &streamind, &criteria, &search_flags, &charset) == FAILURE) { ZEND_WRONG_PARAM_COUNT(); @@ -3705,8 +3706,15 @@ PHP_FUNCTION(imap_search) } } + pgm = mail_criteria(search_criteria); IMAPG(imap_messages) = IMAPG(imap_messages_tail) = NIL; - mail_search_full(imap_le_struct->imap_stream, (argc == 4 ? Z_STRVAL_PP(charset) : NIL), mail_criteria(search_criteria), flags); + + mail_search_full(imap_le_struct->imap_stream, (argc == 4 ? Z_STRVAL_PP(charset) : NIL), pgm, flags); + + if (pgm) { + mail_free_searchpgm(&pgm); + } + if (IMAPG(imap_messages) == NIL) { efree(search_criteria); RETURN_FALSE; @@ -4315,6 +4323,7 @@ PHP_FUNCTION(imap_thread) char criteria[] = "ALL"; THREADNODE *top; int argc = ZEND_NUM_ARGS(); + SEARCHPGM *pgm = NIL; if ( argc < 1 || argc > 2 || zend_get_parameters_ex(argc, &streamind, &search_flags) == FAILURE) { ZEND_WRONG_PARAM_COUNT(); @@ -4329,7 +4338,11 @@ PHP_FUNCTION(imap_thread) flags = Z_LVAL_PP(search_flags); } - top = mail_thread(imap_le_struct->imap_stream, "REFERENCES", NIL, mail_criteria(criteria), flags); + pgm = mail_criteria(criteria); + top = mail_thread(imap_le_struct->imap_stream, "REFERENCES", NIL, pgm, flags); + if (pgm) { + mail_free_searchpgm(&pgm); + } if(top == NIL) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Function returned an empty tree"); -- 2.40.0