summaryrefslogtreecommitdiff
path: root/ext/imap/php_imap.c
diff options
context:
space:
mode:
authorPierre Joye <pajoye@php.net>2009-04-25 15:02:36 +0000
committerPierre Joye <pajoye@php.net>2009-04-25 15:02:36 +0000
commit7b73190bce4f684994a7127a648b0db9fbfbb899 (patch)
tree2d0909191bd94bc2765cc95492e9e694be3661f4 /ext/imap/php_imap.c
parent2e88653242e219213f44d75e925c96904491d997 (diff)
downloadphp-git-7b73190bce4f684994a7127a648b0db9fbfbb899.tar.gz
- MFH: SEARCHPGM struct has to be freed
Diffstat (limited to 'ext/imap/php_imap.c')
-rw-r--r--ext/imap/php_imap.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c
index 31e052170f..5cb354c0aa 100644
--- a/ext/imap/php_imap.c
+++ b/ext/imap/php_imap.c
@@ -3902,6 +3902,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;
@@ -3912,7 +3913,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;
@@ -4518,6 +4526,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;
@@ -4525,7 +4534,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");