Skip to content

Commit 6ae9888

Browse files
committed
chore: revert unnecessary changes
1 parent 5b676e8 commit 6ae9888

9 files changed

Lines changed: 385 additions & 90 deletions

ext/date/php_date.c

Lines changed: 74 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -2156,8 +2156,54 @@ static zend_object *date_object_clone_interval(zend_object *this_ptr) /* {{{ */
21562156
return &new_obj->std;
21572157
} /* }}} */
21582158

2159-
static bool php_date_initialize_from_hash(php_date_obj *dateobj, const HashTable *myht);
2160-
static bool php_date_timezone_initialize_from_hash(php_timezone_obj *tzobj, const HashTable *myht);
2159+
static HashTable *date_object_get_gc_interval(zend_object *object, zval **table, int *n) /* {{{ */
2160+
{
2161+
2162+
*table = NULL;
2163+
*n = 0;
2164+
return zend_std_get_properties(object);
2165+
} /* }}} */
2166+
2167+
static void date_interval_object_to_hash(php_interval_obj *intervalobj, HashTable *props)
2168+
{
2169+
zval zv;
2170+
2171+
/* Records whether this is a special relative interval that needs to be recreated from a string */
2172+
if (intervalobj->from_string) {
2173+
ZVAL_BOOL(&zv, (bool)intervalobj->from_string);
2174+
zend_hash_str_update(props, "from_string", strlen("from_string"), &zv);
2175+
ZVAL_STR_COPY(&zv, intervalobj->date_string);
2176+
zend_hash_str_update(props, "date_string", strlen("date_string"), &zv);
2177+
return;
2178+
}
2179+
2180+
#define PHP_DATE_INTERVAL_ADD_PROPERTY(n,f) \
2181+
ZVAL_LONG(&zv, (zend_long)intervalobj->diff->f); \
2182+
zend_hash_str_update(props, n, sizeof(n)-1, &zv);
2183+
2184+
PHP_DATE_INTERVAL_ADD_PROPERTY("y", y);
2185+
PHP_DATE_INTERVAL_ADD_PROPERTY("m", m);
2186+
PHP_DATE_INTERVAL_ADD_PROPERTY("d", d);
2187+
PHP_DATE_INTERVAL_ADD_PROPERTY("h", h);
2188+
PHP_DATE_INTERVAL_ADD_PROPERTY("i", i);
2189+
PHP_DATE_INTERVAL_ADD_PROPERTY("s", s);
2190+
ZVAL_DOUBLE(&zv, (double)intervalobj->diff->us / 1000000.0);
2191+
zend_hash_str_update(props, "f", sizeof("f") - 1, &zv);
2192+
PHP_DATE_INTERVAL_ADD_PROPERTY("invert", invert);
2193+
if (intervalobj->diff->days != TIMELIB_UNSET) {
2194+
PHP_DATE_INTERVAL_ADD_PROPERTY("days", days);
2195+
} else {
2196+
ZVAL_FALSE(&zv);
2197+
zend_hash_str_update(props, "days", sizeof("days")-1, &zv);
2198+
}
2199+
ZVAL_BOOL(&zv, (bool)intervalobj->from_string);
2200+
zend_hash_str_update(props, "from_string", strlen("from_string"), &zv);
2201+
2202+
#undef PHP_DATE_INTERVAL_ADD_PROPERTY
2203+
}
2204+
2205+
static bool php_date_initialize_from_hash(php_date_obj **dateobj, const HashTable *myht);
2206+
static bool php_date_timezone_initialize_from_hash(php_timezone_obj **tzobj, const HashTable *myht);
21612207
static void php_date_interval_initialize_from_hash(php_interval_obj *intobj, const HashTable *myht);
21622208

21632209
static bool php_date_copy_direct_cache_state(
@@ -2234,52 +2280,6 @@ static bool php_date_copy_direct_cache_state(
22342280
return false;
22352281
}
22362282

2237-
static HashTable *date_object_get_gc_interval(zend_object *object, zval **table, int *n) /* {{{ */
2238-
{
2239-
2240-
*table = NULL;
2241-
*n = 0;
2242-
return zend_std_get_properties(object);
2243-
} /* }}} */
2244-
2245-
static void date_interval_object_to_hash(php_interval_obj *intervalobj, HashTable *props)
2246-
{
2247-
zval zv;
2248-
2249-
/* Records whether this is a special relative interval that needs to be recreated from a string */
2250-
if (intervalobj->from_string) {
2251-
ZVAL_BOOL(&zv, (bool)intervalobj->from_string);
2252-
zend_hash_str_update(props, "from_string", strlen("from_string"), &zv);
2253-
ZVAL_STR_COPY(&zv, intervalobj->date_string);
2254-
zend_hash_str_update(props, "date_string", strlen("date_string"), &zv);
2255-
return;
2256-
}
2257-
2258-
#define PHP_DATE_INTERVAL_ADD_PROPERTY(n,f) \
2259-
ZVAL_LONG(&zv, (zend_long)intervalobj->diff->f); \
2260-
zend_hash_str_update(props, n, sizeof(n)-1, &zv);
2261-
2262-
PHP_DATE_INTERVAL_ADD_PROPERTY("y", y);
2263-
PHP_DATE_INTERVAL_ADD_PROPERTY("m", m);
2264-
PHP_DATE_INTERVAL_ADD_PROPERTY("d", d);
2265-
PHP_DATE_INTERVAL_ADD_PROPERTY("h", h);
2266-
PHP_DATE_INTERVAL_ADD_PROPERTY("i", i);
2267-
PHP_DATE_INTERVAL_ADD_PROPERTY("s", s);
2268-
ZVAL_DOUBLE(&zv, (double)intervalobj->diff->us / 1000000.0);
2269-
zend_hash_str_update(props, "f", sizeof("f") - 1, &zv);
2270-
PHP_DATE_INTERVAL_ADD_PROPERTY("invert", invert);
2271-
if (intervalobj->diff->days != TIMELIB_UNSET) {
2272-
PHP_DATE_INTERVAL_ADD_PROPERTY("days", days);
2273-
} else {
2274-
ZVAL_FALSE(&zv);
2275-
zend_hash_str_update(props, "days", sizeof("days")-1, &zv);
2276-
}
2277-
ZVAL_BOOL(&zv, (bool)intervalobj->from_string);
2278-
zend_hash_str_update(props, "from_string", strlen("from_string"), &zv);
2279-
2280-
#undef PHP_DATE_INTERVAL_ADD_PROPERTY
2281-
}
2282-
22832283
static void php_date_direct_cache_add_assoc_int64(zval *array_zv, const char *name, int64_t value)
22842284
{
22852285
#if PHP_DATE_SIZEOF_LONG == 8
@@ -2379,11 +2379,15 @@ static bool php_date_unserialize_direct_cache_state(zval *object, zval *state)
23792379

23802380
if (instanceof_function(Z_OBJCE_P(object), date_ce_date) ||
23812381
instanceof_function(Z_OBJCE_P(object), date_ce_immutable)) {
2382-
return php_date_initialize_from_hash(Z_PHPDATE_P(object), Z_ARRVAL_P(state));
2382+
php_date_obj *dateobj = Z_PHPDATE_P(object);
2383+
2384+
return php_date_initialize_from_hash(&dateobj, Z_ARRVAL_P(state));
23832385
}
23842386

23852387
if (instanceof_function(Z_OBJCE_P(object), date_ce_timezone)) {
2386-
return php_date_timezone_initialize_from_hash(Z_PHPTIMEZONE_P(object), Z_ARRVAL_P(state));
2388+
php_timezone_obj *tzobj = Z_PHPTIMEZONE_P(object);
2389+
2390+
return php_date_timezone_initialize_from_hash(&tzobj, Z_ARRVAL_P(state));
23872391
}
23882392

23892393
if (instanceof_function(Z_OBJCE_P(object), date_ce_interval)) {
@@ -2399,6 +2403,7 @@ const zend_opcache_static_cache_safe_direct_handlers *php_date_get_direct_cache_
23992403
{
24002404
static const zend_opcache_static_cache_safe_direct_handlers handlers = {
24012405
true,
2406+
{ false, NULL, NULL },
24022407
php_date_copy_direct_cache_state,
24032408
NULL,
24042409
php_date_serialize_direct_cache_state,
@@ -3038,7 +3043,7 @@ PHP_METHOD(DateTimeImmutable, createFromTimestamp)
30383043
}
30393044
/* }}} */
30403045

3041-
static bool php_date_initialize_from_hash(php_date_obj *dateobj, const HashTable *myht)
3046+
static bool php_date_initialize_from_hash(php_date_obj **dateobj, const HashTable *myht)
30423047
{
30433048
zval *z_date;
30443049
zval *z_timezone_type;
@@ -3067,7 +3072,7 @@ static bool php_date_initialize_from_hash(php_date_obj *dateobj, const HashTable
30673072
zend_string *tmp = zend_string_concat3(
30683073
Z_STRVAL_P(z_date), Z_STRLEN_P(z_date), " ", 1,
30693074
Z_STRVAL_P(z_timezone), Z_STRLEN_P(z_timezone));
3070-
bool ret = php_date_initialize(dateobj, ZSTR_VAL(tmp), ZSTR_LEN(tmp), NULL, NULL, 0);
3075+
bool ret = php_date_initialize(*dateobj, ZSTR_VAL(tmp), ZSTR_LEN(tmp), NULL, NULL, 0);
30713076
zend_string_release(tmp);
30723077
return ret;
30733078
}
@@ -3087,7 +3092,7 @@ static bool php_date_initialize_from_hash(php_date_obj *dateobj, const HashTable
30873092
tzobj->tzi.tz = tzi;
30883093
tzobj->initialized = true;
30893094

3090-
ret = php_date_initialize(dateobj, Z_STRVAL_P(z_date), Z_STRLEN_P(z_date), NULL, &tmp_obj, 0);
3095+
ret = php_date_initialize(*dateobj, Z_STRVAL_P(z_date), Z_STRLEN_P(z_date), NULL, &tmp_obj, 0);
30913096
zval_ptr_dtor(&tmp_obj);
30923097
return ret;
30933098
}
@@ -3110,7 +3115,7 @@ PHP_METHOD(DateTime, __set_state)
31103115

31113116
php_date_instantiate(date_ce_date, return_value);
31123117
dateobj = Z_PHPDATE_P(return_value);
3113-
if (!php_date_initialize_from_hash(dateobj, myht)) {
3118+
if (!php_date_initialize_from_hash(&dateobj, myht)) {
31143119
zend_throw_error(NULL, "Invalid serialization data for DateTime object");
31153120
RETURN_THROWS();
31163121
}
@@ -3132,7 +3137,7 @@ PHP_METHOD(DateTimeImmutable, __set_state)
31323137

31333138
php_date_instantiate(date_ce_immutable, return_value);
31343139
dateobj = Z_PHPDATE_P(return_value);
3135-
if (!php_date_initialize_from_hash(dateobj, myht)) {
3140+
if (!php_date_initialize_from_hash(&dateobj, myht)) {
31363141
zend_throw_error(NULL, "Invalid serialization data for DateTimeImmutable object");
31373142
RETURN_THROWS();
31383143
}
@@ -3217,7 +3222,7 @@ PHP_METHOD(DateTime, __unserialize)
32173222

32183223
dateobj = Z_PHPDATE_P(object);
32193224

3220-
if (!php_date_initialize_from_hash(dateobj, myht)) {
3225+
if (!php_date_initialize_from_hash(&dateobj, myht)) {
32213226
zend_throw_error(NULL, "Invalid serialization data for DateTime object");
32223227
RETURN_THROWS();
32233228
}
@@ -3239,7 +3244,7 @@ PHP_METHOD(DateTimeImmutable, __unserialize)
32393244

32403245
dateobj = Z_PHPDATE_P(object);
32413246

3242-
if (!php_date_initialize_from_hash(dateobj, myht)) {
3247+
if (!php_date_initialize_from_hash(&dateobj, myht)) {
32433248
zend_throw_error(NULL, "Invalid serialization data for DateTimeImmutable object");
32443249
RETURN_THROWS();
32453250
}
@@ -3262,7 +3267,7 @@ static void php_do_date_time_wakeup(INTERNAL_FUNCTION_PARAMETERS, const char *cl
32623267

32633268
myht = Z_OBJPROP_P(object);
32643269

3265-
if (!php_date_initialize_from_hash(dateobj, myht)) {
3270+
if (!php_date_initialize_from_hash(&dateobj, myht)) {
32663271
zend_throw_error(NULL, "Invalid serialization data for %s object", class_name);
32673272
RETURN_THROWS();
32683273
}
@@ -4283,15 +4288,16 @@ PHP_METHOD(DateTimeZone, __construct)
42834288
}
42844289
/* }}} */
42854290

4286-
static bool php_date_timezone_initialize_from_hash(php_timezone_obj *tzobj, const HashTable *myht) /* {{{ */
4291+
static bool php_date_timezone_initialize_from_hash(php_timezone_obj **tzobj, const HashTable *myht) /* {{{ */
42874292
{
4288-
zval *z_timezone_type;
4289-
zval *z_timezone;
4293+
zval *z_timezone_type;
42904294

42914295
if ((z_timezone_type = zend_hash_str_find(myht, "timezone_type", sizeof("timezone_type") - 1)) == NULL) {
42924296
return false;
42934297
}
42944298

4299+
zval *z_timezone;
4300+
42954301
if ((z_timezone = zend_hash_str_find(myht, "timezone", sizeof("timezone") - 1)) == NULL) {
42964302
return false;
42974303
}
@@ -4308,7 +4314,7 @@ static bool php_date_timezone_initialize_from_hash(php_timezone_obj *tzobj, cons
43084314
if (UNEXPECTED(zend_str_has_nul_byte(Z_STR_P(z_timezone)))) {
43094315
return false;
43104316
}
4311-
return timezone_initialize(tzobj, Z_STR_P(z_timezone), NULL);
4317+
return timezone_initialize(*tzobj, Z_STR_P(z_timezone), NULL);
43124318
} /* }}} */
43134319

43144320
/* {{{ */
@@ -4323,7 +4329,7 @@ PHP_METHOD(DateTimeZone, __set_state)
43234329

43244330
php_date_instantiate(date_ce_timezone, return_value);
43254331
tzobj = Z_PHPTIMEZONE_P(return_value);
4326-
if (!php_date_timezone_initialize_from_hash(tzobj, myht)) {
4332+
if (!php_date_timezone_initialize_from_hash(&tzobj, myht)) {
43274333
zend_throw_error(NULL, "Invalid serialization data for DateTimeZone object");
43284334
RETURN_THROWS();
43294335
}
@@ -4343,7 +4349,7 @@ PHP_METHOD(DateTimeZone, __wakeup)
43434349

43444350
myht = Z_OBJPROP_P(object);
43454351

4346-
if (!php_date_timezone_initialize_from_hash(tzobj, myht)) {
4352+
if (!php_date_timezone_initialize_from_hash(&tzobj, myht)) {
43474353
zend_throw_error(NULL, "Invalid serialization data for DateTimeZone object");
43484354
RETURN_THROWS();
43494355
}
@@ -4407,7 +4413,7 @@ PHP_METHOD(DateTimeZone, __unserialize)
44074413

44084414
tzobj = Z_PHPTIMEZONE_P(object);
44094415

4410-
if (!php_date_timezone_initialize_from_hash(tzobj, myht)) {
4416+
if (!php_date_timezone_initialize_from_hash(&tzobj, myht)) {
44114417
zend_throw_error(NULL, "Invalid serialization data for DateTimeZone object");
44124418
RETURN_THROWS();
44134419
}
@@ -4834,10 +4840,10 @@ static void php_date_interval_initialize_from_hash(php_interval_obj *intobj, con
48344840
{
48354841
/* If we have a date_string, use that instead */
48364842
const zval *date_str = zend_hash_str_find(myht, "date_string", strlen("date_string"));
4837-
timelib_time *time;
4838-
timelib_error_container *err;
48394843
if (date_str && Z_TYPE_P(date_str) == IS_STRING) {
4840-
err = NULL;
4844+
timelib_time *time;
4845+
timelib_error_container *err = NULL;
4846+
48414847
time = timelib_strtotime(Z_STRVAL_P(date_str), Z_STRLEN_P(date_str), &err, DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper);
48424848

48434849
if (err->error_count > 0) {

0 commit comments

Comments
 (0)