php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Return to Bug #72073
Patch jsonserializedepth revision 2016-04-22 17:11 UTC by jani dot ollikainen at valve dot fi
revision 2016-04-22 16:50 UTC by jani dot ollikainen at valve dot fi
revision 2016-04-22 16:48 UTC by jani dot ollikainen at valve dot fi
revision 2016-04-22 08:24 UTC by jani dot ollikainen at valve dot fi
Patch jsonserializedepth-55 revision 2016-04-22 15:09 UTC by jani dot ollikainen at valve dot fi

Patch jsonserializedepth for JSON related Bug #72073

Patch version 2016-04-22 08:24 UTC

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

Obsoleted by patches:

Patch Revisions: 2016-04-22 17:11 UTC | 2016-04-22 16:50 UTC | 2016-04-22 16:48 UTC | 2016-04-22 08:24 UTC

Developer: jani.ollikainen@valve.fi



  diff --git a/ext/json/json_encoder.c b/ext/json/json_encoder.c
 index c3aa348..027c96a 100644
 index c3aa348..e64a09a 100644
  --- a/ext/json/json_encoder.c
  +++ b/ext/json/json_encoder.c
  @@ -446,7 +446,7 @@ static void php_json_escape_string(smart_str *buf, char *s, size_t len, int opti
   static void php_json_encode_serializable_object(smart_str *buf, zval *val, int options) /* {{{ */


  +	zval retval, fname, args[1];
   	HashTable* myht;
   
   	if (Z_TYPE_P(val) == IS_ARRAY) {
 @@ -461,17 +461,20 @@ static void php_json_encode_serializable_object(smart_str *buf, zval *val, int o
 @@ -461,9 +461,10 @@ static void php_json_encode_serializable_object(smart_str *buf, zval *val, int o
   		return;
   	}
   
  +	ZVAL_LONG(&args[0], JSON_G(encoder_depth));
Line 21 (now 21), was 23 lines, now 5 lines

  -	if (FAILURE == call_user_function_ex(EG(function_table), val, &fname, &retval, 0, NULL, 1, NULL) || Z_TYPE(retval) == IS_UNDEF) {
  +	if (FAILURE == call_user_function_ex(EG(function_table), val, &fname, &retval, 1, args, 1, NULL) || Z_TYPE(retval) == IS_UNDEF) {
   		zend_throw_exception_ex(NULL, 0, "Failed calling %s::jsonSerialize()", ZSTR_VAL(ce->name));
   		smart_str_appendl(buf, "null", sizeof("null") - 1);
 +		zval_ptr_dtor(&args[0]);
   		zval_ptr_dtor(&fname);
  		return;
  	}
  
  	if (EG(exception)) {
  		/* Error already raised */
 +		zval_ptr_dtor(&args[0]);
  		zval_ptr_dtor(&retval);
  		zval_ptr_dtor(&fname);
  		smart_str_appendl(buf, "null", sizeof("null") - 1);
 @@ -487,6 +490,7 @@ static void php_json_encode_serializable_object(smart_str *buf, zval *val, int o
  		php_json_encode(buf, &retval, options);
  	}
  
 +	zval_ptr_dtor(&args[0]);
  	zval_ptr_dtor(&retval);
  	zval_ptr_dtor(&fname);
  }
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu May 09 23:01:32 2024 UTC