From: Pierre Joye Date: Sat, 25 Apr 2009 15:02:03 +0000 (+0000) Subject: - SEARCHPGM struct has to be freed X-Git-Tag: php-5.4.0alpha1~191^2~3856 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8405f08d5f45a117060cf072bf1a005f45b4f1fc;p=php - SEARCHPGM struct has to be freed --- diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c index 213e2b8f52..259a566680 100644 --- a/ext/imap/php_imap.c +++ b/ext/imap/php_imap.c @@ -3892,6 +3892,7 @@ PHP_FUNCTION(imap_search) char *search_criteria; MESSAGELIST *cur; int argc = ZEND_NUM_ARGS(); + SEARCHPGM *pgm = NIL; if (zend_parse_parameters(argc TSRMLS_CC, "rs|ls", &streamind, &criteria, &criteria_len, &flags, &charset, &charset_len) == FAILURE) { return; @@ -3902,7 +3903,14 @@ PHP_FUNCTION(imap_search) search_criteria = estrndup(criteria, criteria_len); IMAPG(imap_messages) = IMAPG(imap_messages_tail) = NIL; - mail_search_full(imap_le_struct->imap_stream, (argc == 4 ? charset : NIL), mail_criteria(search_criteria), flags); + pgm = mail_criteria(search_criteria); + + mail_search_full(imap_le_struct->imap_stream, (argc == 4 ? charset : NIL), pgm, flags); + + if (pgm) { + mail_free_searchpgm(&pgm); + } + if (IMAPG(imap_messages) == NIL) { efree(search_criteria); RETURN_FALSE; @@ -4508,6 +4516,7 @@ PHP_FUNCTION(imap_thread) char criteria[] = "ALL"; THREADNODE *top; int argc = ZEND_NUM_ARGS(); + SEARCHPGM *pgm = NIL; if (zend_parse_parameters(argc TSRMLS_CC, "r|l", &streamind, &flags) == FAILURE) { return; @@ -4515,7 +4524,11 @@ PHP_FUNCTION(imap_thread) ZEND_FETCH_RESOURCE(imap_le_struct, pils *, &streamind, -1, "imap", le_imap); - 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");