Okay, here is the proper fixed patch, tested via various methods: $d1 = new DateTime; while(1) { // no memory leak $d1->modify("Tue, 10 Apr 2012 11:27:56 +0300");
// memory leak - now fixed with new patch $d1->modify("Tue, 10 Apr 2012 11:27:56 CST"); // no memory leak $d1->modify("Tue, 10 Apr 2012 11:27:56 Pacific/Chatham"); } Attaching this second patch to the original bug report, as well as including here. Thanks!
--- ../php-5.4.9_orig/ext/date/php_date.c 2012-11-20 23:12:20.000000000 -0600 +++ ext/date/php_date.c 2012-12-06 03:19:26.597301993 -0600 @@ -2763,6 +2763,25 @@ dateobj->time->s = 0; } } + + if(tmp_time->zone_type) { + dateobj->time->zone_type = tmp_time->zone_type; + switch (tmp_time->zone_type) { + case TIMELIB_ZONETYPE_ID: + dateobj->time->tz_info = tmp_time->tz_info; + break; + case TIMELIB_ZONETYPE_OFFSET: + dateobj->time->z = tmp_time->z; + break; + case TIMELIB_ZONETYPE_ABBR: + if(dateobj->time->tz_abbr) free(dateobj->time->tz_abbr); + dateobj->time->z = tmp_time->z; + dateobj->time->dst = tmp_time->dst; + dateobj->time->tz_abbr = strdup(tmp_time->tz_abbr); + break; + } + } + timelib_time_dtor(tmp_time); timelib_update_ts(dateobj->time, NULL);
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php