]> granicus.if.org Git - php/commitdiff
- SEARCHPGM struct has to be freed
authorPierre Joye <pajoye@php.net>
Sat, 25 Apr 2009 15:02:03 +0000 (15:02 +0000)
committerPierre Joye <pajoye@php.net>
Sat, 25 Apr 2009 15:02:03 +0000 (15:02 +0000)
ext/imap/php_imap.c

index 213e2b8f52ef00718b1dc8f544c4ea9d2a674f57..259a566680d2c378d717ac8f4773617ee52a1ba0 100644 (file)
@@ -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");