@@ -2263,17 +2263,23 @@ PHPAPI zval *php_date_instantiate(zend_class_entry *pce, zval *object) /* {{{ */
2263
2263
2264
2264
/* Helper function used to store the latest found warnings and errors while
2265
2265
* parsing, from either strtotime or parse_from_format. */
2266
- static void update_errors_warnings (timelib_error_container * last_errors ) /* {{{ */
2266
+ static void update_errors_warnings (timelib_error_container * * last_errors ) /* {{{ */
2267
2267
{
2268
2268
if (DATEG (last_errors )) {
2269
2269
timelib_error_container_dtor (DATEG (last_errors ));
2270
2270
DATEG (last_errors ) = NULL ;
2271
2271
}
2272
- if (last_errors -> warning_count || last_errors -> error_count ) {
2273
- DATEG (last_errors ) = last_errors ;
2274
- } else {
2275
- timelib_error_container_dtor (last_errors );
2272
+
2273
+ if (last_errors == NULL || (* last_errors ) == NULL ) {
2274
+ return ;
2276
2275
}
2276
+
2277
+ if ((* last_errors )-> warning_count || (* last_errors )-> error_count ) {
2278
+ DATEG (last_errors ) = * last_errors ;
2279
+ }
2280
+
2281
+ timelib_error_container_dtor (* last_errors );
2282
+ * last_errors = NULL ;
2277
2283
} /* }}} */
2278
2284
2279
2285
static void php_date_set_time_fraction (timelib_time * time , int microseconds )
@@ -2324,7 +2330,7 @@ PHPAPI bool php_date_initialize(php_date_obj *dateobj, const char *time_str, siz
2324
2330
}
2325
2331
2326
2332
/* update last errors and warnings */
2327
- update_errors_warnings (err );
2333
+ update_errors_warnings (& err );
2328
2334
2329
2335
/* If called from a constructor throw an exception */
2330
2336
if ((flags & PHP_DATE_INIT_CTOR ) && err && err -> error_count ) {
@@ -3002,7 +3008,8 @@ static bool php_date_modify(zval *object, char *modify, size_t modify_len) /* {{
3002
3008
tmp_time = timelib_strtotime (modify , modify_len , & err , DATE_TIMEZONEDB , php_date_parse_tzfile_wrapper );
3003
3009
3004
3010
/* update last errors and warnings */
3005
- update_errors_warnings (err );
3011
+ update_errors_warnings (& err );
3012
+
3006
3013
if (err && err -> error_count ) {
3007
3014
/* spit out the first library error message, at least */
3008
3015
php_error_docref (NULL , E_WARNING , "Failed to parse time string (%s) at position %d (%c): %s" , modify ,
0 commit comments