mirror of
https://github.com/php/php-src.git
synced 2025-08-16 22:18:50 +02:00
Merge branch 'PHP-7.3' into PHP-7.4
This commit is contained in:
commit
9624e87a8f
3 changed files with 24 additions and 37 deletions
|
@ -4435,12 +4435,21 @@ PHP_FUNCTION(date_interval_create_from_date_string)
|
||||||
Z_PARAM_STR(time_str)
|
Z_PARAM_STR(time_str)
|
||||||
ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
|
ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
|
||||||
|
|
||||||
php_date_instantiate(date_ce_interval, return_value);
|
|
||||||
|
|
||||||
time = timelib_strtotime(ZSTR_VAL(time_str), ZSTR_LEN(time_str), &err, DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper);
|
time = timelib_strtotime(ZSTR_VAL(time_str), ZSTR_LEN(time_str), &err, DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper);
|
||||||
|
|
||||||
|
if (err->error_count > 0) {
|
||||||
|
php_error_docref(NULL, E_WARNING, "Unknown or bad format (%s) at position %d (%c): %s", ZSTR_VAL(time_str),
|
||||||
|
err->error_messages[0].position, err->error_messages[0].character ? err->error_messages[0].character : ' ', err->error_messages[0].message);
|
||||||
|
RETVAL_FALSE;
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
php_date_instantiate(date_ce_interval, return_value);
|
||||||
diobj = Z_PHPINTERVAL_P(return_value);
|
diobj = Z_PHPINTERVAL_P(return_value);
|
||||||
diobj->diff = timelib_rel_time_clone(&time->relative);
|
diobj->diff = timelib_rel_time_clone(&time->relative);
|
||||||
diobj->initialized = 1;
|
diobj->initialized = 1;
|
||||||
|
|
||||||
|
cleanup:
|
||||||
timelib_time_dtor(time);
|
timelib_time_dtor(time);
|
||||||
timelib_error_container_dtor(err);
|
timelib_error_container_dtor(err);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
--TEST--
|
||||||
|
Test date_interval_create_from_date_string() function : nonsense data
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
$i = date_interval_create_from_date_string("foobar");
|
||||||
|
var_dump($i);
|
||||||
|
?>
|
||||||
|
--EXPECTF--
|
||||||
|
Warning: date_interval_create_from_date_string(): Unknown or bad format (foobar) at position 0 (f): The timezone could not be found in the database in %sdate_interval_create_from_date_string_broken.php on line 2
|
||||||
|
bool(false)
|
|
@ -4,41 +4,9 @@ Test date_interval_create_from_date_string() function : null parameter
|
||||||
Rodrigo Prado de Jesus <royopa [at] gmail [dot] com>
|
Rodrigo Prado de Jesus <royopa [at] gmail [dot] com>
|
||||||
--FILE--
|
--FILE--
|
||||||
<?php
|
<?php
|
||||||
$i = date_interval_create_from_date_string(null); //returns a empty object
|
$i = date_interval_create_from_date_string(null);
|
||||||
var_dump($i);
|
var_dump($i);
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
object(DateInterval)#%d (16) {
|
Warning: date_interval_create_from_date_string(): Unknown or bad format () at position 0 ( ): Empty string in %sdate_interval_create_from_date_string_nullparam.php on line 2
|
||||||
["y"]=>
|
bool(false)
|
||||||
int(0)
|
|
||||||
["m"]=>
|
|
||||||
int(0)
|
|
||||||
["d"]=>
|
|
||||||
int(0)
|
|
||||||
["h"]=>
|
|
||||||
int(0)
|
|
||||||
["i"]=>
|
|
||||||
int(0)
|
|
||||||
["s"]=>
|
|
||||||
int(0)
|
|
||||||
["f"]=>
|
|
||||||
float(0)
|
|
||||||
["weekday"]=>
|
|
||||||
int(0)
|
|
||||||
["weekday_behavior"]=>
|
|
||||||
int(0)
|
|
||||||
["first_last_day_of"]=>
|
|
||||||
int(0)
|
|
||||||
["invert"]=>
|
|
||||||
int(0)
|
|
||||||
["days"]=>
|
|
||||||
int(0)
|
|
||||||
["special_type"]=>
|
|
||||||
int(0)
|
|
||||||
["special_amount"]=>
|
|
||||||
int(0)
|
|
||||||
["have_weekday_relative"]=>
|
|
||||||
int(0)
|
|
||||||
["have_special_relative"]=>
|
|
||||||
int(0)
|
|
||||||
}
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue