diff options
Diffstat (limited to 'ext/session/session.c')
| -rw-r--r-- | ext/session/session.c | 14 | 
1 files changed, 4 insertions, 10 deletions
diff --git a/ext/session/session.c b/ext/session/session.c index 7178caa35d..211d234479 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -199,12 +199,11 @@ typedef struct {  #define ENCODE_LOOP(code)										\  	for (zend_hash_internal_pointer_reset(&PS(vars));			\ -			zend_hash_get_current_key(&PS(vars), &key, &num_key) == HASH_KEY_IS_STRING; \ +			zend_hash_get_current_key(&PS(vars), &key, &num_key, 0) == HASH_KEY_IS_STRING; \  			zend_hash_move_forward(&PS(vars))) {				\  		if (php_get_session_var(key, strlen(key), &struc PLS_CC PSLS_CC ELS_CC) == SUCCESS) { \  			code;		 										\  		} 														\ -		efree(key);												\  	}  static void php_set_session_var(char *name, size_t namelen, @@ -452,7 +451,6 @@ PS_SERIALIZER_DECODE_FUNC(wddx)  	char tmp[128];  	ulong idx;  	int hash_type; -	int dofree = 1;  	int ret;  	if (vallen == 0)  @@ -465,19 +463,16 @@ PS_SERIALIZER_DECODE_FUNC(wddx)  		for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(retval));  			 zend_hash_get_current_data(Z_ARRVAL_P(retval), (void **) &ent) == SUCCESS;  			 zend_hash_move_forward(Z_ARRVAL_P(retval))) { -			hash_type = zend_hash_get_current_key(Z_ARRVAL_P(retval), &key, &idx); +			hash_type = zend_hash_get_current_key(Z_ARRVAL_P(retval), &key, &idx, 0);  			switch (hash_type) {  				case HASH_KEY_IS_LONG:  					sprintf(tmp, "%ld", idx);  					key = tmp; -					dofree = 0;  					/* fallthru */  				case HASH_KEY_IS_STRING:  					php_set_session_var(key, strlen(key), *ent PSLS_CC);  					PS_ADD_VAR(key); -					if (dofree) efree(key); -					dofree = 1;  			}  		}  	} @@ -601,7 +596,7 @@ static void php_session_save_current_state(PSLS_D)  		}  		for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(PS(http_session_vars))); -				zend_hash_get_current_key(Z_ARRVAL_P(PS(http_session_vars)), &variable, &num_key) == HASH_KEY_IS_STRING; +				zend_hash_get_current_key(Z_ARRVAL_P(PS(http_session_vars)), &variable, &num_key, 1) == HASH_KEY_IS_STRING;  				zend_hash_move_forward(Z_ARRVAL_P(PS(http_session_vars)))) {  			PS_ADD_VAR(variable);  		} @@ -1394,12 +1389,11 @@ PHP_FUNCTION(session_unset)  	PSLS_FETCH();  	for (zend_hash_internal_pointer_reset(&PS(vars)); -			zend_hash_get_current_key(&PS(vars), &variable, &num_key) == HASH_KEY_IS_STRING; +			zend_hash_get_current_key(&PS(vars), &variable, &num_key, 0) == HASH_KEY_IS_STRING;  			zend_hash_move_forward(&PS(vars))) {  		if (zend_hash_find(&EG(symbol_table), variable, strlen(variable) + 1, (void **) &tmp)  				== SUCCESS)  			zend_hash_del(&EG(symbol_table), variable, strlen(variable) + 1); -		efree(variable);  	}  	/* Clean $HTTP_SESSION_VARS. */  | 
