$NetBSD: patch-ad,v 1.3 2001/03/14 00:10:00 jlam Exp $ --- ext/imap/php_imap.c.orig Wed Oct 25 13:43:52 2000 +++ ext/imap/php_imap.c @@ -183,7 +183,19 @@ void mail_close_it(zend_rsrc_list_entry *rsrc) { pils *imap_le_struct = (pils *)rsrc->ptr; + IMAPLS_FETCH(); + mail_close_full(imap_le_struct->imap_stream, imap_le_struct->flags); + + if (IMAPG(imap_user)) { + efree(IMAPG(imap_user)); + IMAPG(imap_user) = 0; + } + if (IMAPG(imap_password)) { + efree(IMAPG(imap_password)); + IMAPG(imap_password) = 0; + } + efree(imap_le_struct); } @@ -392,7 +404,11 @@ ZEND_INIT_MODULE_GLOBALS(imap, php_imap_init_globals, NULL) -#if 1 +/* + * Use the installed c-client linkage.c to determine which drivers and + * authenticators are linked in. + */ +#if 0 #ifndef PHP_WIN32 mail_link(&unixdriver); /* link in the unix driver */ #endif @@ -633,6 +649,14 @@ } } + if (IMAPG(imap_user)) { + efree(IMAPG(imap_user)); + } + + if (IMAPG(imap_password)) { + efree(IMAPG(imap_password)); + } + IMAPG(imap_user) = estrndup(Z_STRVAL_PP(user), Z_STRLEN_PP(user)); IMAPG(imap_password) = estrndup(Z_STRVAL_PP(passwd), Z_STRLEN_PP(passwd)); @@ -712,6 +736,8 @@ } } efree(hashed_details); + efree(IMAPG(imap_user)); IMAPG(imap_user) = 0; + efree(IMAPG(imap_password)); IMAPG(imap_password) = 0; RETURN_FALSE; } @@ -721,6 +747,8 @@ node = malloc(sizeof(pils)); if (node == NULL) { efree(hashed_details); + efree(IMAPG(imap_user)); IMAPG(imap_user) = 0; + efree(IMAPG(imap_password)); IMAPG(imap_password) = 0; RETURN_FALSE; } @@ -757,6 +785,8 @@ free(headp); efree(hashed_details); + efree(IMAPG(imap_user)); IMAPG(imap_user) = 0; + efree(IMAPG(imap_password)); IMAPG(imap_password) = 0; RETURN_FALSE; } @@ -766,11 +796,11 @@ } else { #endif imap_stream = mail_open(NIL, Z_STRVAL_PP(mailbox), flags); - efree(IMAPG(imap_user)); - efree(IMAPG(imap_password)); if (imap_stream == NIL) { php_error(E_WARNING, "Couldn't open stream %s\n", (*mailbox)->value.str.val); + efree(IMAPG(imap_user)); IMAPG(imap_user) = 0; + efree(IMAPG(imap_password)); IMAPG(imap_password) = 0; RETURN_FALSE; }