[packages/php] update php-systzdata.patch: r13: adapt for upstream changes to use PHP allocator

glen glen at pld-linux.org
Tue Nov 10 22:34:33 CET 2015


commit 909e9211186296ed6f96bb3de7ff49fb12f92dd5
Author: Elan Ruusamäe <glen at delfi.ee>
Date:   Tue Nov 10 23:23:26 2015 +0200

    update php-systzdata.patch: r13: adapt for upstream changes to use PHP allocator
    
    fixes segfault on php shutdown:
    
     Program received signal SIGSEGV, Segmentation fault.
     0x00007ffff7a12f0a in _efree () from /usr/lib64/libphp_common-7.0.0RC6.so
     (gdb) bt
     #0  0x00007ffff7a12f0a in _efree () from /usr/lib64/libphp_common-7.0.0RC6.so
     #1  0x00007ffff7946277 in timelib_tzinfo_dtor () from /usr/lib64/libphp_common-7.0.0RC6.so
     #2  0x00007ffff7a46606 in zend_hash_destroy () from /usr/lib64/libphp_common-7.0.0RC6.so
     #3  0x00007ffff791c68c in zm_deactivate_date () from /usr/lib64/libphp_common-7.0.0RC6.so
     #4  0x00007ffff7a3c154 in zend_deactivate_modules () from /usr/lib64/libphp_common-7.0.0RC6.so
     #5  0x00007ffff79d56c5 in php_request_shutdown () from /usr/lib64/libphp_common-7.0.0RC6.so
     #6  0x0000000000405879 in ?? ()
     #7  0x0000000000404d81 in main ()
     (gdb)
    
    patch updated from remi repo
    https://github.com/remicollet/remirepo/blob/master/php/php70/php-7.0.0-systzdata-v13.patch

 php-systzdata.patch | 47 ++++++++++++++++++++++++++---------------------
 1 file changed, 26 insertions(+), 21 deletions(-)
---
diff --git a/php-systzdata.patch b/php-systzdata.patch
index a33ef08..5efc47d 100644
--- a/php-systzdata.patch
+++ b/php-systzdata.patch
@@ -2,6 +2,7 @@ Add support for use of the system timezone database, rather
 than embedding a copy.  Discussed upstream but was not desired.
 
 History:
+r13: adapt for upstream changes to use PHP allocator
 r12: adapt for upstream changes for new zic
 r11: use canonical names to avoid more case sensitivity issues
      round lat/long from zone.tab towards zero per builtin db
@@ -20,8 +21,9 @@ r3: fix a crash if /usr/share/zoneinfo doesn't exist (Raphael Geissert)
 r2: add filesystem trawl to set up name alias index
 r1: initial revision
 
---- php-7.0.0RC1/ext/date/lib/parse_tz.c~	2015-08-27 12:06:04.000000000 +0300
-+++ php-7.0.0RC1/ext/date/lib/parse_tz.c	2015-08-27 12:08:08.706661229 +0300
+diff -up php-7.0.0RC1/ext/date/lib/parse_tz.c.systzdata php-7.0.0RC1/ext/date/lib/parse_tz.c
+--- php-7.0.0RC1/ext/date/lib/parse_tz.c.systzdata	2015-08-18 23:39:24.000000000 +0200
++++ php-7.0.0RC1/ext/date/lib/parse_tz.c	2015-08-22 07:54:38.097258458 +0200
 @@ -20,6 +20,16 @@
  
  #include "timelib.h"
@@ -39,11 +41,12 @@ r1: initial revision
  #include <stdio.h>
  
  #ifdef HAVE_LOCALE_H
-@@ -43,7 +43,11 @@
+@@ -32,8 +42,12 @@
+ #include <strings.h>
  #endif
  
- #define TIMELIB_SUPPORTS_V2DATA
 +#ifndef HAVE_SYSTEM_TZDATA
+ #define TIMELIB_SUPPORTS_V2DATA
  #include "timezonedb.h"
 +#endif
 +
@@ -51,7 +54,7 @@ r1: initial revision
  
  #if (defined(__APPLE__) || defined(__APPLE_CC__)) && (defined(__BIG_ENDIAN__) || defined(__LITTLE_ENDIAN__))
  # if defined(__LITTLE_ENDIAN__)
-@@ -53,6 +68,10 @@ static int read_preamble(const unsigned
+@@ -55,6 +69,11 @@ static int read_preamble(const unsigned
  {
  	uint32_t version;
  
@@ -59,10 +62,11 @@ r1: initial revision
 +		*tzf += 20;
 +		return 0;
 +	}
++
  	/* read ID */
  	version = (*tzf)[3] - '0';
  	*tzf += 4;
-@@ -296,7 +315,418 @@ void timelib_dump_tzinfo(timelib_tzinfo
+@@ -298,7 +317,418 @@ void timelib_dump_tzinfo(timelib_tzinfo
  	}
  }
  
@@ -100,11 +104,11 @@ r1: initial revision
 +    const unsigned char *p = (const unsigned char *)str;
 +    uint32_t hash = 5381;
 +    int c;
-+    
++
 +    while ((c = tolower(*p++)) != '\0') {
 +        hash = (hash << 5) ^ hash ^ c;
 +    }
-+    
++
 +    return hash % LOCINFO_HASH_SIZE;
 +}
 +
@@ -432,9 +436,9 @@ r1: initial revision
 +{
 +    if (timezonedb_system) {
 +        timelib_tzdb_index_entry *ent, lookup;
-+        
++
 +        lookup.id = (char *)timezone;
-+        
++
 +        ent = bsearch(&lookup, timezonedb_system->index,
 +                      timezonedb_system->index_size, sizeof lookup,
 +                      sysdbcmp);
@@ -482,7 +486,7 @@ r1: initial revision
  {
  	int left = 0, right = tzdb->index_size - 1;
  #ifdef HAVE_SETLOCALE
-@@ -335,21 +765,87 @@ static int seek_to_tz_position(const uns
+@@ -337,21 +767,88 @@ static int seek_to_tz_position(const uns
  	return 0;
  }
  
@@ -499,9 +503,9 @@ r1: initial revision
 +			return 0;
 +		}
 +
-+		(*tzf) = (unsigned char *)orig ;
++		(*tzf) = (unsigned char *)orig;
 +		*map = orig;
-+		return 1;
++        return 1;
 +	}
 +	else
 +#endif
@@ -567,11 +571,12 @@ r1: initial revision
 +		return stat(fname, &st) == 0 && is_valid_tzfile(&st);
 +	}
 +#endif
++
 +	return (inmem_seek_to_tz_position(&tzf, timezone, tzdb));
  }
  
  static void skip_64bit_preamble(const unsigned char **tzf, timelib_tzinfo *tz)
-@@ -374,24 +870,54 @@ static void read_64bit_header(const unsi
+@@ -376,24 +873,54 @@ static void read_64bit_header(const unsi
  timelib_tzinfo *timelib_parse_tzfile(char *timezone, const timelib_tzdb *tzdb)
  {
  	const unsigned char *tzf;
@@ -605,8 +610,8 @@ r1: initial revision
 +			 * if possible. */
 +
 +			if ((li = find_zone_info(system_location_table, timezone)) != NULL) {
-+				tmp->location.comments = strdup(li->comment);
-+                                strncpy(tmp->location.country_code, li->code, 2);
++				tmp->location.comments = timelib_strdup(li->comment);
++				strncpy(tmp->location.country_code, li->code, 2);
 +				tmp->location.longitude = li->longitude;
 +				tmp->location.latitude = li->latitude;
 +				tmp->bc = 1;
@@ -614,7 +619,7 @@ r1: initial revision
 +			else {
 +				strcpy(tmp->location.country_code, "??");
 +				tmp->bc = 0;
-+				tmp->location.comments = strdup("");
++				tmp->location.comments = timelib_strdup("");
 +			}
 +
 +			/* Now done with the mmap segment - discard it. */
@@ -622,6 +627,7 @@ r1: initial revision
 +		} else
 +#endif
 +		{
++			/* PHP-style - use the embedded info. */
 +			if (version == 2) {
 +				skip_64bit_preamble(&tzf, tmp);
 +				read_64bit_header(&tzf, tmp);
@@ -629,15 +635,14 @@ r1: initial revision
 +				skip_64bit_types(&tzf, tmp);
 +				skip_posix_string(&tzf, tmp);
 +			}
-+			/* PHP-style - use the embedded info. */
 +			read_location(&tzf, tmp);
 + 		}
  	} else {
  		tmp = NULL;
  	}
-diff -up php-5.6.9RC1/ext/date/lib/timelib.m4.systzdata php-5.6.9RC1/ext/date/lib/timelib.m4
---- php-5.6.9RC1/ext/date/lib/timelib.m4.systzdata	2015-04-30 00:00:18.000000000 +0200
-+++ php-5.6.9RC1/ext/date/lib/timelib.m4	2015-04-30 06:32:08.549500385 +0200
+diff -up php-7.0.0RC1/ext/date/lib/timelib.m4.systzdata php-7.0.0RC1/ext/date/lib/timelib.m4
+--- php-7.0.0RC1/ext/date/lib/timelib.m4.systzdata	2015-08-18 23:39:24.000000000 +0200
++++ php-7.0.0RC1/ext/date/lib/timelib.m4	2015-08-22 07:47:34.854055364 +0200
 @@ -78,3 +78,17 @@ stdlib.h
  
  dnl Check for strtoll, atoll
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/php.git/commitdiff/98ff8200c6d366e669f8a8f089e2279c3ccb6fa1



More information about the pld-cvs-commit mailing list