Hi Andrei, This breaks the build (on win32). empty_string is not defined.
- Frank > andrei Tue Jan 25 16:33:58 2005 EDT > > Modified files: > /php-src/ext/standard browscap.c > /php-src/sapi/embed php_embed.c > Log: > MFB (Fix several egregious leaks in ext/browscap and sapi/embed). > > > http://cvs.php.net/diff.php/php-src/ext/standard/browscap.c?r1=1.82&r2=1.83&ty=u > Index: php-src/ext/standard/browscap.c > diff -u php-src/ext/standard/browscap.c:1.82 php-src/ext/standard/browscap.c:1.83 > --- php-src/ext/standard/browscap.c:1.82 Mon Mar 15 16:26:39 2004 > +++ php-src/ext/standard/browscap.c Tue Jan 25 16:33:55 2005 > @@ -16,7 +16,7 @@ > +----------------------------------------------------------------------+ > */ > > -/* $Id: browscap.c,v 1.82 2004/03/15 21:26:39 jay Exp $ */ > +/* $Id: browscap.c,v 1.83 2005/01/25 21:33:55 andrei Exp $ */ > > #include "php.h" > #include "php_regex.h" > @@ -33,12 +33,17 @@ > > /* OBJECTS_FIXME: This whole extension needs going through. The use of objects looks pretty broken here */ > > -static void browscap_entry_dtor(zval *pvalue) > +static void browscap_entry_dtor(zval **pvalue) > { > - if (Z_TYPE_P(pvalue) == IS_ARRAY) { > - zend_hash_destroy(Z_ARRVAL_P(pvalue)); > - free(Z_ARRVAL_P(pvalue)); > + if (Z_TYPE_PP(pvalue) == IS_ARRAY) { > + zend_hash_destroy(Z_ARRVAL_PP(pvalue)); > + free(Z_ARRVAL_PP(pvalue)); > + } else if (Z_TYPE_PP(pvalue) == IS_STRING) { > + if (Z_STRVAL_PP(pvalue) && Z_STRVAL_PP(pvalue) != empty_string) > { > + free(Z_STRVAL_PP(pvalue)); > + } > } > + free(*pvalue); > } > > /* {{{ convert_browscap_pattern > @@ -97,7 +102,7 @@ > > new_property = (zval *) malloc(sizeof(zval)); > INIT_PZVAL(new_property); > - Z_STRVAL_P(new_property) = Z_STRLEN_P(arg2)?zend_strndup(Z_STRVAL_P(arg2), Z_STRLEN_P(arg2)):""; > + Z_STRVAL_P(new_property) = Z_STRLEN_P(arg2)?zend_strndup(Z_STRVAL_P(arg2), Z_STRLEN_P(arg2)):empty_string; > Z_STRLEN_P(new_property) = Z_STRLEN_P(arg2); > Z_TYPE_P(new_property) = IS_STRING; > > @@ -123,6 +128,7 @@ > section_properties = (HashTable *) > malloc(sizeof(HashTable)); > zend_hash_init(section_properties, 0, NULL, > (dtor_func_t) browscap_entry_dtor, 1); > current_section->value.ht = section_properties; > + current_section->type = IS_ARRAY; > zend_hash_update(&browser_hash, > Z_STRVAL_P(arg1), Z_STRLEN_P(arg1)+1, (void *) �t_section, sizeof(zval *), NULL); > > Z_STRVAL_P(processed) = Z_STRVAL_P(arg1); > http://cvs.php.net/diff.php/php-src/sapi/embed/php_embed.c?r1=1.9&r2=1.10&ty=u > Index: php-src/sapi/embed/php_embed.c > diff -u php-src/sapi/embed/php_embed.c:1.9 php-src/sapi/embed/php_embed.c:1.10 > --- php-src/sapi/embed/php_embed.c:1.9 Mon Dec 20 14:33:39 2004 > +++ php-src/sapi/embed/php_embed.c Tue Jan 25 16:33:58 2005 > @@ -15,7 +15,7 @@ > | Author: Edin Kadribasic <[EMAIL PROTECTED]> | > +----------------------------------------------------------------------+ > */ > -/* $Id: php_embed.c,v 1.9 2004/12/20 19:33:39 rasmus Exp $ */ > +/* $Id: php_embed.c,v 1.10 2005/01/25 21:33:58 andrei Exp $ */ > > #include "php_embed.h" > > @@ -211,6 +211,7 @@ > { > php_request_shutdown((void *) 0); > php_module_shutdown(TSRMLS_C); > + sapi_shutdown(); > #ifdef ZTS > tsrm_shutdown(); > #endif > > -- > PHP CVS Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
