diff options
-rw-r--r-- | php-wip2.patch | 93 | ||||
-rw-r--r-- | php55.spec | 10 |
2 files changed, 101 insertions, 2 deletions
diff --git a/php-wip2.patch b/php-wip2.patch new file mode 100644 index 0000000..fcea691 --- /dev/null +++ b/php-wip2.patch @@ -0,0 +1,93 @@ +From 5137cb5f0ccdeb78d6db25f6045b2c520463a38f Mon Sep 17 00:00:00 2001 +From: Derick Rethans <github@derickrethans.nl> +Date: Thu, 2 Jan 2014 12:45:48 +0000 +Subject: [PATCH] Fixed (some of) add/sub. + +This worked in PHP 5.4 already, but with the introduction of DateTimeImmutable +this code was not correctly merged. +--- + ext/date/php_date.c | 48 ++++++++---------------------------------------- + 1 file changed, 8 insertions(+), 40 deletions(-) + +diff --git a/ext/date/php_date.c b/ext/date/php_date.c +index cd3bf74..d96428d 100644 +--- a/ext/date/php_date.c ++++ b/ext/date/php_date.c +@@ -3137,33 +3137,16 @@ static void php_date_add(zval *object, zval *interval, zval *return_value TSRMLS + { + php_date_obj *dateobj; + php_interval_obj *intobj; +- int bias = 1; ++ timelib_time *new_time; + + dateobj = (php_date_obj *) zend_object_store_get_object(object TSRMLS_CC); + DATE_CHECK_INITIALIZED(dateobj->time, DateTime); + intobj = (php_interval_obj *) zend_object_store_get_object(interval TSRMLS_CC); + DATE_CHECK_INITIALIZED(intobj->initialized, DateInterval); + +- if (intobj->diff->have_weekday_relative || intobj->diff->have_special_relative) { +- memcpy(&dateobj->time->relative, intobj->diff, sizeof(struct timelib_rel_time)); +- } else { +- if (intobj->diff->invert) { +- bias = -1; +- } +- memset(&dateobj->time->relative, 0, sizeof(struct timelib_rel_time)); +- dateobj->time->relative.y = intobj->diff->y * bias; +- dateobj->time->relative.m = intobj->diff->m * bias; +- dateobj->time->relative.d = intobj->diff->d * bias; +- dateobj->time->relative.h = intobj->diff->h * bias; +- dateobj->time->relative.i = intobj->diff->i * bias; +- dateobj->time->relative.s = intobj->diff->s * bias; +- } +- dateobj->time->have_relative = 1; +- dateobj->time->sse_uptodate = 0; +- +- timelib_update_ts(dateobj->time, NULL); +- timelib_update_from_sse(dateobj->time); +- dateobj->time->have_relative = 0; ++ new_time = timelib_add(dateobj->time, intobj->diff); ++ timelib_time_dtor(dateobj->time); ++ dateobj->time = new_time; + } + + /* {{{ proto DateTime date_add(DateTime object, DateInterval interval) +@@ -3204,7 +3187,7 @@ static void php_date_sub(zval *object, zval *interval, zval *return_value TSRMLS + { + php_date_obj *dateobj; + php_interval_obj *intobj; +- int bias = 1; ++ timelib_time *new_time; + + dateobj = (php_date_obj *) zend_object_store_get_object(object TSRMLS_CC); + DATE_CHECK_INITIALIZED(dateobj->time, DateTime); +@@ -3216,24 +3199,9 @@ static void php_date_sub(zval *object, zval *interval, zval *return_value TSRMLS + return; + } + +- if (intobj->diff->invert) { +- bias = -1; +- } +- +- memset(&dateobj->time->relative, 0, sizeof(struct timelib_rel_time)); +- dateobj->time->relative.y = 0 - (intobj->diff->y * bias); +- dateobj->time->relative.m = 0 - (intobj->diff->m * bias); +- dateobj->time->relative.d = 0 - (intobj->diff->d * bias); +- dateobj->time->relative.h = 0 - (intobj->diff->h * bias); +- dateobj->time->relative.i = 0 - (intobj->diff->i * bias); +- dateobj->time->relative.s = 0 - (intobj->diff->s * bias); +- dateobj->time->have_relative = 1; +- dateobj->time->sse_uptodate = 0; +- +- timelib_update_ts(dateobj->time, NULL); +- timelib_update_from_sse(dateobj->time); +- +- dateobj->time->have_relative = 0; ++ new_time = timelib_sub(dateobj->time, intobj->diff); ++ timelib_time_dtor(dateobj->time); ++ dateobj->time = new_time; + } + + /* {{{ proto DateTime date_sub(DateTime object, DateInterval interval) +-- +1.8.4.3 + @@ -106,7 +106,7 @@ Summary: PHP scripting language for creating dynamic web sites Name: php Version: 5.5.8 %if 0%{?snapdate:1}%{?rcver:1} -Release: 0.1.%{?snapdate}%{?rcver}%{?dist} +Release: 0.2.%{?snapdate}%{?rcver}%{?dist} %else Release: 1%{?dist}.1 %endif @@ -176,6 +176,7 @@ Patch91: php-5.3.7-oci8conf.patch # WIP Patch200: php-wip.patch +Patch201: php-wip2.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -219,12 +220,13 @@ Requires: php-cli%{?_isa} = %{version}-%{release} # To ensure correct /var/lib/php/session ownership: Requires(pre): httpd - +%if 0%{?fedora} < 20 # Don't provides extensions, which are not shared library, as .so %{?filter_provides_in: %filter_provides_in %{_libdir}/php/modules/.*\.so$} %{?filter_provides_in: %filter_provides_in %{_libdir}/php-zts/modules/.*\.so$} %{?filter_provides_in: %filter_provides_in %{_httpd_moddir}/.*\.so$} %{?filter_setup} +%endif %description @@ -889,6 +891,7 @@ rm -rf ext/json # WIP patch %patch200 -p0 -b .wip +%patch201 -p1 -b .wip2 # Prevent %%doc confusion over LICENSE files cp Zend/LICENSE Zend/ZEND_LICENSE @@ -1863,6 +1866,9 @@ fi %changelog +* Wed Jan 8 2014 Remi Collet <rcollet@redhat.com> 5.5.8-0.2.RC1 +- another test build of 5.5.8RC1 + * Sat Dec 28 2013 Remi Collet <rcollet@redhat.com> 5.5.8-0.1.RC1 - test build of 5.5.8RC1 |