felipe Tue, 22 Nov 2011 12:29:15 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=319676
Log:
- Fixed memory leak in several Intl locale functions
Changed paths:
U php/php-src/branches/PHP_5_3/NEWS
U php/php-src/branches/PHP_5_3/ext/intl/locale/locale_methods.c
U php/php-src/branches/PHP_5_4/NEWS
U php/php-src/branches/PHP_5_4/ext/intl/locale/locale_methods.c
U php/php-src/trunk/ext/intl/locale/locale_methods.c
Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS 2011-11-22 11:03:30 UTC (rev 319675)
+++ php/php-src/branches/PHP_5_3/NEWS 2011-11-22 12:29:15 UTC (rev 319676)
@@ -30,6 +30,7 @@
- Intl:
. Fixed bug #60192 (SegFault when Collator not constructed
properly). (Florian)
+ . Fixed memory leak in several Intl locale functions. (Felipe)
- Gd:
. Fixed bug #60160 (imagefill() doesn't work correctly
Modified: php/php-src/branches/PHP_5_3/ext/intl/locale/locale_methods.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/intl/locale/locale_methods.c 2011-11-22 11:03:30 UTC (rev 319675)
+++ php/php-src/branches/PHP_5_3/ext/intl/locale/locale_methods.c 2011-11-22 12:29:15 UTC (rev 319676)
@@ -470,6 +470,7 @@
char* disp_loc_name = NULL;
int disp_loc_name_len = 0;
+ int free_loc_name = 0;
UChar* disp_name = NULL;
int32_t disp_name_len = 0;
@@ -517,17 +518,18 @@
if( mod_loc_name==NULL ){
mod_loc_name = estrdup( loc_name );
}
+
+ /* Check if disp_loc_name passed , if not use default locale */
+ if( !disp_loc_name){
+ disp_loc_name = estrdup(INTL_G(default_locale));
+ free_loc_name = 1;
+ }
/* Get the disp_value for the given locale */
do{
disp_name = erealloc( disp_name , buflen );
disp_name_len = buflen;
- /* Check if disp_loc_name passed , if not use default locale */
- if( !disp_loc_name){
- disp_loc_name = estrdup(INTL_G(default_locale));
- }
-
if( strcmp(tag_name , LOC_LANG_TAG)==0 ){
buflen = uloc_getDisplayLanguage ( mod_loc_name , disp_loc_name , disp_name , disp_name_len , &status);
} else if( strcmp(tag_name , LOC_SCRIPT_TAG)==0 ){
@@ -557,6 +559,10 @@
if( mod_loc_name){
efree( mod_loc_name );
}
+ if (free_loc_name) {
+ efree(disp_loc_name);
+ disp_loc_name = NULL;
+ }
RETURN_FALSE;
}
} while( buflen > disp_name_len );
@@ -564,6 +570,10 @@
if( mod_loc_name){
efree( mod_loc_name );
}
+ if (free_loc_name) {
+ efree(disp_loc_name);
+ disp_loc_name = NULL;
+ }
/* Convert display locale name from UTF-16 to UTF-8. */
intl_convert_utf16_to_utf8( &utf8value, &utf8value_len, disp_name, buflen, &status );
efree( disp_name );
Modified: php/php-src/branches/PHP_5_4/NEWS
===================================================================
--- php/php-src/branches/PHP_5_4/NEWS 2011-11-22 11:03:30 UTC (rev 319675)
+++ php/php-src/branches/PHP_5_4/NEWS 2011-11-22 12:29:15 UTC (rev 319676)
@@ -17,6 +17,27 @@
. Fixed bug #43200 (Interface implementation / inheritence not possible in
abstract classes). (Felipe)
+- CLI SAPI:
+ . Fixed bug #60159 (Router returns false, but POST is not passed to requested
+ resource). (Laruence)
+ . Fixed bug #55759 (memory leak when using built-in server). (Laruence)
+
+- Improved PHP-FPM SAPI:
+ . Enhance error log when the primary script can't be open. FR #60199. (fat)
+ . Remove EXPERIMENTAL flag. (fat)
+ . Added .phar to default authorized extensions. (fat)
+
+- BCmath:
+ . Fixed bug #60377 (bcscale related crashes on 64bits platforms) (shm)
+
+- Intl:
+ . Fixed memory leak in several Intl locale functions. (Felipe)
+
+- Mbstring
+ . Fixed bug #60306 (Characters lost while converting from cp936 to utf8).
+ (Laruence)
+ . Fixed possible crash in mb_ereg_search_init() using empty pattern. (Felipe)
+
- MS SQL:
. Fixed bug #60267 (Compile failure with freetds 0.91). (Felipe)
@@ -35,35 +56,17 @@
. Fixed bug #60282 (Segfault when using ob_gzhandler() with open buffers).
(Laruence)
+- Reflection:
+ . Fixed bug #60357 (__toString() method triggers E_NOTICE "Array to string
+ conversion"). (Laruence)
+
- SOAP extension:
. Added new SoapClient option "keep_alive". FR #60329. (Pierrick)
-
+
- Tidy:
. Fixed bug #54682 (Tidy::diagnose() NULL pointer dereference).
(Maksymilian Arciemowicz, Felipe)
-- Mbstring
- . Fixed bug #60306 (Characters lost while converting from cp936 to utf8).
- (Laruence)
- . Fixed possible crash in mb_ereg_search_init() using empty pattern. (Felipe)
-
-- CLI SAPI:
- . Fixed bug #60159 (Router returns false, but POST is not passed to requested
- resource). (Laruence)
- . Fixed bug #55759 (memory leak when using built-in server). (Laruence)
-
-- Improved PHP-FPM SAPI:
- . Enhance error log when the primary script can't be open. FR #60199. (fat)
- . Remove EXPERIMENTAL flag. (fat)
- . Added .phar to default authorized extensions. (fat)
-
-- BCmath:
- . Fixed bug #60377 (bcscale related crashes on 64bits platforms) (shm)
-
-- Reflection:
- . Fixed bug #60357 (__toString() method triggers E_NOTICE "Array to string
- conversion"). (Laruence)
-
11 Nov 2011, PHP 5.4.0 RC1
- General improvements:
. Changed silent conversion of array to string to produce a notice. (Patrick)
Modified: php/php-src/branches/PHP_5_4/ext/intl/locale/locale_methods.c
===================================================================
--- php/php-src/branches/PHP_5_4/ext/intl/locale/locale_methods.c 2011-11-22 11:03:30 UTC (rev 319675)
+++ php/php-src/branches/PHP_5_4/ext/intl/locale/locale_methods.c 2011-11-22 12:29:15 UTC (rev 319676)
@@ -470,6 +470,7 @@
char* disp_loc_name = NULL;
int disp_loc_name_len = 0;
+ int free_loc_name = 0;
UChar* disp_name = NULL;
int32_t disp_name_len = 0;
@@ -517,17 +518,18 @@
if( mod_loc_name==NULL ){
mod_loc_name = estrdup( loc_name );
}
+
+ /* Check if disp_loc_name passed , if not use default locale */
+ if( !disp_loc_name){
+ disp_loc_name = estrdup(INTL_G(default_locale));
+ free_loc_name = 1;
+ }
/* Get the disp_value for the given locale */
do{
disp_name = erealloc( disp_name , buflen );
disp_name_len = buflen;
- /* Check if disp_loc_name passed , if not use default locale */
- if( !disp_loc_name){
- disp_loc_name = estrdup(INTL_G(default_locale));
- }
-
if( strcmp(tag_name , LOC_LANG_TAG)==0 ){
buflen = uloc_getDisplayLanguage ( mod_loc_name , disp_loc_name , disp_name , disp_name_len , &status);
} else if( strcmp(tag_name , LOC_SCRIPT_TAG)==0 ){
@@ -557,6 +559,10 @@
if( mod_loc_name){
efree( mod_loc_name );
}
+ if (free_loc_name) {
+ efree(disp_loc_name);
+ disp_loc_name = NULL;
+ }
RETURN_FALSE;
}
} while( buflen > disp_name_len );
@@ -564,6 +570,10 @@
if( mod_loc_name){
efree( mod_loc_name );
}
+ if (free_loc_name) {
+ efree(disp_loc_name);
+ disp_loc_name = NULL;
+ }
/* Convert display locale name from UTF-16 to UTF-8. */
intl_convert_utf16_to_utf8( &utf8value, &utf8value_len, disp_name, buflen, &status );
efree( disp_name );
Modified: php/php-src/trunk/ext/intl/locale/locale_methods.c
===================================================================
--- php/php-src/trunk/ext/intl/locale/locale_methods.c 2011-11-22 11:03:30 UTC (rev 319675)
+++ php/php-src/trunk/ext/intl/locale/locale_methods.c 2011-11-22 12:29:15 UTC (rev 319676)
@@ -470,6 +470,7 @@
char* disp_loc_name = NULL;
int disp_loc_name_len = 0;
+ int free_loc_name = 0;
UChar* disp_name = NULL;
int32_t disp_name_len = 0;
@@ -517,17 +518,18 @@
if( mod_loc_name==NULL ){
mod_loc_name = estrdup( loc_name );
}
+
+ /* Check if disp_loc_name passed , if not use default locale */
+ if( !disp_loc_name){
+ disp_loc_name = estrdup(INTL_G(default_locale));
+ free_loc_name = 1;
+ }
/* Get the disp_value for the given locale */
do{
disp_name = erealloc( disp_name , buflen );
disp_name_len = buflen;
- /* Check if disp_loc_name passed , if not use default locale */
- if( !disp_loc_name){
- disp_loc_name = estrdup(INTL_G(default_locale));
- }
-
if( strcmp(tag_name , LOC_LANG_TAG)==0 ){
buflen = uloc_getDisplayLanguage ( mod_loc_name , disp_loc_name , disp_name , disp_name_len , &status);
} else if( strcmp(tag_name , LOC_SCRIPT_TAG)==0 ){
@@ -557,6 +559,10 @@
if( mod_loc_name){
efree( mod_loc_name );
}
+ if (free_loc_name) {
+ efree(disp_loc_name);
+ disp_loc_name = NULL;
+ }
RETURN_FALSE;
}
} while( buflen > disp_name_len );
@@ -564,6 +570,10 @@
if( mod_loc_name){
efree( mod_loc_name );
}
+ if (free_loc_name) {
+ efree(disp_loc_name);
+ disp_loc_name = NULL;
+ }
/* Convert display locale name from UTF-16 to UTF-8. */
intl_convert_utf16_to_utf8( &utf8value, &utf8value_len, disp_name, buflen, &status );
efree( disp_name );
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php