diff options
Diffstat (limited to 'ext/imap/php_imap.c')
-rw-r--r-- | ext/imap/php_imap.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c index 18253c46f4..941b2aa948 100644 --- a/ext/imap/php_imap.c +++ b/ext/imap/php_imap.c @@ -3385,6 +3385,7 @@ PHP_FUNCTION(imap_search) int ind, ind_type, args; pils *imap_le_struct; long flags; + char *search_criteria; MESSAGELIST *cur; IMAPLS_FETCH(); @@ -3395,6 +3396,7 @@ PHP_FUNCTION(imap_search) convert_to_long_ex(streamind); convert_to_string_ex(criteria); + search_criteria = estrndup(Z_STRVAL_PP(criteria), Z_STRLEN_PP(criteria)); if (args == 2) { flags = SE_FREE; @@ -3411,7 +3413,7 @@ PHP_FUNCTION(imap_search) } IMAPG(imap_messages) = NIL; - mail_search_full(imap_le_struct->imap_stream, NIL, mail_criteria(cpystr(Z_STRVAL_PP(criteria))), flags); + mail_search_full(imap_le_struct->imap_stream, NIL, mail_criteria(search_criteria), flags); if (IMAPG(imap_messages) == NIL) { RETURN_FALSE; } @@ -3423,6 +3425,7 @@ PHP_FUNCTION(imap_search) cur = cur->next; } mail_free_messagelist(&IMAPG(imap_messages)); + efree(search_criteria); } /* }}} */ |