php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Return to Bug #72269
Patch htscanner_php7.0.patch revision 2016-07-03 10:11 UTC by roel at abittechnical dot com
revision 2016-07-02 21:32 UTC by roel at abittechnical dot com
revision 2016-07-02 14:02 UTC by roel at abittechnical dot com
revision 2016-06-05 20:51 UTC by roel at abittechnical dot com
revision 2016-06-05 20:37 UTC by roel at abittechnical dot com
revision 2016-05-31 20:14 UTC by roel at abittechnical dot com

Patch htscanner_php7.0.patch for htscanner Bug #72269

Patch version 2016-06-05 20:37 UTC

Return to Bug #72269 | Download this patch
This patch is obsolete

Obsoleted by patches:

This patch renders other patches obsolete

Obsolete patches:

Patch Revisions: 2016-07-03 10:11 UTC | 2016-07-02 21:32 UTC | 2016-07-02 14:02 UTC | 2016-06-05 20:51 UTC | 2016-06-05 20:37 UTC | 2016-05-31 20:14 UTC

Developer: roel@abittechnical.com



  diff --git a/htscanner.c b/htscanner.c
 index 55bc68b..39ad6dc 100644
 index 55bc68b..9490afb 100644
  --- a/htscanner.c
  +++ b/htscanner.c
  @@ -147,18 +147,39 @@ static int value_hnd(char *name, char *value, int flag, int mode, HashTable *ini
   #endif


  +	ini_entries_cache = emalloc(sizeof(HashTable));
   	if (!ini_entries_cache) {
   		return FAILURE;
   	}
 @@ -347,31 +383,56 @@ static int htscanner_main(TSRMLS_D) /* {{{ */
 @@ -347,26 +383,48 @@ static int htscanner_main(TSRMLS_D) /* {{{ */
   #endif
   
   	htscannerMutexLock(ini_entries_cache_mutex);
  +#if PHP_VERSION_ID < 70000


  +#if PHP_VERSION_ID < 70000
   			char *value, *name;
  -			HashPosition pos;
   			uint len;
 +			HashPosition pos;
  +#else
  +			zend_string *name;
  +			zval *value;
 +#endif
 +#endif
 +			HashPosition pos;
   			ulong num;
   
 +#if PHP_VERSION_ID < 70000
   			zend_hash_internal_pointer_reset_ex(entry_fetched->ini_entries, &pos);
   
 +#if PHP_VERSION_ID < 70000
   			while (SUCCESS == zend_hash_get_current_data_ex(entry_fetched->ini_entries, (void**)&value, &pos)) {
   				zend_hash_get_current_key_ex(entry_fetched->ini_entries, &name, &len, &num, 0, &pos);
   				htscanner_debug("setting: %s = %s (cache hit)", name, value);
  +#else
 +			ZEND_HASH_FOREACH_KEY_VAL(entry_fetched->ini_entries, num, name, value) {
 +			while ((value = zend_hash_get_current_data_ex(entry_fetched->ini_entries, &pos))) {
 +				zend_hash_get_current_key_ex(entry_fetched->ini_entries, &name, &num, &pos);
  +				htscanner_debug("setting: %s = %s (cache hit)", name, Z_STRVAL_P(value));
  +#endif
   #if PHP_VERSION_ID < 50204
   				if (zend_alter_ini_entry(name, len, value, strlen(value), PHP_INI_PERDIR, PHP_INI_STAGE_PHP_INI_STAGE_RUNTIME) == FAILURE) {
Line 145 (now 146), was 27 lines, now 18 lines

  +#endif
   					htscannerMutexUnlock(ini_entries_cache_mutex);
   					RETURN_FAILURE(msg);
   				}
 +#if PHP_VERSION_ID < 70000
  				zend_hash_move_forward_ex(entry_fetched->ini_entries, &pos);
  			}
 +#else
 +			} ZEND_HASH_FOREACH_END();
 +#endif
  			htscannerMutexUnlock(ini_entries_cache_mutex);
  			return SUCCESS;
  		}
 @@ -380,7 +441,7 @@ static int htscanner_main(TSRMLS_D) /* {{{ */
 @@ -380,7 +438,7 @@ static int htscanner_main(TSRMLS_D) /* {{{ */
   	/* parse, insert, assign */
   	if (HTG(default_ttl)) {
   		entry.created_on = t;
  -		entry.ini_entries = ini_entries = malloc(sizeof(HashTable));
  +		entry.ini_entries = ini_entries = emalloc(sizeof(HashTable));
   		if (ini_entries)
   			zend_hash_init(ini_entries, 0, NULL, NULL, 1);
   	}
 @@ -405,8 +466,13 @@ static int htscanner_main(TSRMLS_D) /* {{{ */
 @@ -405,8 +463,13 @@ static int htscanner_main(TSRMLS_D) /* {{{ */
   		}
   	}
   
  +#if PHP_VERSION_ID < 70000


  +#endif
   	htscannerMutexUnlock(ini_entries_cache_mutex);
   
   	return SUCCESS;
 @@ -451,7 +517,7 @@ static PHP_MSHUTDOWN_FUNCTION(htscanner) /* {{{ */
 @@ -451,7 +514,7 @@ static PHP_MSHUTDOWN_FUNCTION(htscanner) /* {{{ */
   	if (ini_entries_cache) {
   		htscannerMutexLock(ini_entries_cache_mutex);
   		zend_hash_destroy(ini_entries_cache);
  -		free(ini_entries_cache);
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Apr 26 19:01:29 2024 UTC