php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login

Patch fix-serialize-in-sleep-and-wakeup for Variables related Bug #55801

Patch version 2011-10-13 16:21 UTC

Return to Bug #55801 | Download this patch
This patch renders other patches obsolete

Obsolete patches:

Patch Revisions: 2011-10-13 16:21 UTC | 2011-10-13 14:39 UTC

Developer: mike@php.net

Line 9 (now 9), was 1202 lines, now 8 lines

  +	unsigned serialize_lock; /* whether to use the locally supplied var_hash instead (__sleep/__wakeup) */
   	struct {
   		void *var_hash;
   		unsigned level;
 Index: ext/standard/var_unserializer.c
 ===================================================================
 --- ext/standard/var_unserializer.c	(revision 318013)
 +++ ext/standard/var_unserializer.c	(working copy)
 @@ -1,4 +1,4 @@
 -/* Generated by re2c 0.13.5 on Wed Sep 28 15:27:03 2011 */
 +/* Generated by re2c 0.13.5 on Thu Oct 13 16:35:51 2011 */
  #line 1 "ext/standard/var_unserializer.re"
  /*
    +----------------------------------------------------------------------+
 @@ -388,7 +388,9 @@
  		zend_hash_exists(&Z_OBJCE_PP(rval)->function_table, "__wakeup", sizeof("__wakeup"))) {
  		INIT_PZVAL(&fname);
  		ZVAL_STRINGL(&fname, "__wakeup", sizeof("__wakeup") - 1, 0);
 +		BG(serialize_lock)++;
  		call_user_function_ex(CG(function_table), rval, &fname, &retval_ptr, 0, 0, 1, NULL TSRMLS_CC);
 +		BG(serialize_lock)--;
  	}
  
  	if (retval_ptr)
 @@ -414,9 +416,43 @@
  	
  	
  
 -#line 418 "ext/standard/var_unserializer.c"
 +#line 420 "ext/standard/var_unserializer.c"
  {
  	YYCTYPE yych;
 +	static const unsigned char yybm[] = {
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		128, 128, 128, 128, 128, 128, 128, 128, 
 +		128, 128,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +		  0,   0,   0,   0,   0,   0,   0,   0, 
 +	};
  
  	if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
  	yych = *YYCURSOR;
 @@ -438,147 +474,90 @@
  	}
  yy2:
  	yych = *(YYMARKER = ++YYCURSOR);
 -	switch (yych) {
 -	case ':':	goto yy95;
 -	default:	goto yy3;
 -	}
 +	if (yych == ':') goto yy95;
  yy3:
 -#line 740 "ext/standard/var_unserializer.re"
 +#line 742 "ext/standard/var_unserializer.re"
  	{ return 0; }
 -#line 449 "ext/standard/var_unserializer.c"
 +#line 482 "ext/standard/var_unserializer.c"
  yy4:
  	yych = *(YYMARKER = ++YYCURSOR);
 -	switch (yych) {
 -	case ':':	goto yy89;
 -	default:	goto yy3;
 -	}
 +	if (yych == ':') goto yy89;
 +	goto yy3;
  yy5:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case ';':	goto yy87;
 -	default:	goto yy3;
 -	}
 +	if (yych == ';') goto yy87;
 +	goto yy3;
  yy6:
  	yych = *(YYMARKER = ++YYCURSOR);
 -	switch (yych) {
 -	case ':':	goto yy83;
 -	default:	goto yy3;
 -	}
 +	if (yych == ':') goto yy83;
 +	goto yy3;
  yy7:
  	yych = *(YYMARKER = ++YYCURSOR);
 -	switch (yych) {
 -	case ':':	goto yy77;
 -	default:	goto yy3;
 -	}
 +	if (yych == ':') goto yy77;
 +	goto yy3;
  yy8:
  	yych = *(YYMARKER = ++YYCURSOR);
 -	switch (yych) {
 -	case ':':	goto yy53;
 -	default:	goto yy3;
 -	}
 +	if (yych == ':') goto yy53;
 +	goto yy3;
  yy9:
  	yych = *(YYMARKER = ++YYCURSOR);
 -	switch (yych) {
 -	case ':':	goto yy46;
 -	default:	goto yy3;
 -	}
 +	if (yych == ':') goto yy46;
 +	goto yy3;
  yy10:
  	yych = *(YYMARKER = ++YYCURSOR);
 -	switch (yych) {
 -	case ':':	goto yy39;
 -	default:	goto yy3;
 -	}
 +	if (yych == ':') goto yy39;
 +	goto yy3;
  yy11:
  	yych = *(YYMARKER = ++YYCURSOR);
 -	switch (yych) {
 -	case ':':	goto yy32;
 -	default:	goto yy3;
 -	}
 +	if (yych == ':') goto yy32;
 +	goto yy3;
  yy12:
  	yych = *(YYMARKER = ++YYCURSOR);
 -	switch (yych) {
 -	case ':':	goto yy25;
 -	default:	goto yy3;
 -	}
 +	if (yych == ':') goto yy25;
 +	goto yy3;
  yy13:
  	yych = *(YYMARKER = ++YYCURSOR);
 -	switch (yych) {
 -	case ':':	goto yy17;
 -	default:	goto yy3;
 -	}
 +	if (yych == ':') goto yy17;
 +	goto yy3;
  yy14:
  	++YYCURSOR;
 -#line 734 "ext/standard/var_unserializer.re"
 +#line 736 "ext/standard/var_unserializer.re"
  	{
  	/* this is the case where we have less data than planned */
  	php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Unexpected end of serialized data");
  	return 0; /* not sure if it should be 0 or 1 here? */
  }
 -#line 518 "ext/standard/var_unserializer.c"
 +#line 531 "ext/standard/var_unserializer.c"
  yy16:
  	yych = *++YYCURSOR;
  	goto yy3;
  yy17:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '+':	goto yy19;
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy20;
 -	default:	goto yy18;
 +	if (yybm[0+yych] & 128) {
 +		goto yy20;
  	}
 +	if (yych == '+') goto yy19;
  yy18:
  	YYCURSOR = YYMARKER;
  	goto yy3;
  yy19:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy20;
 -	default:	goto yy18;
 +	if (yybm[0+yych] & 128) {
 +		goto yy20;
  	}
 +	goto yy18;
  yy20:
  	++YYCURSOR;
  	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  	yych = *YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy20;
 -	case ':':	goto yy22;
 -	default:	goto yy18;
 +	if (yybm[0+yych] & 128) {
 +		goto yy20;
  	}
 -yy22:
 +	if (yych != ':') goto yy18;
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '"':	goto yy23;
 -	default:	goto yy18;
 -	}
 -yy23:
 +	if (yych != '"') goto yy18;
  	++YYCURSOR;
 -#line 617 "ext/standard/var_unserializer.re"
 +#line 619 "ext/standard/var_unserializer.re"
  	{
  	size_t len, len2, len3, maxlen;
  	long elements;
 @@ -695,66 +674,32 @@
  
  	return object_common2(UNSERIALIZE_PASSTHRU, elements);
  }
 -#line 699 "ext/standard/var_unserializer.c"
 +#line 678 "ext/standard/var_unserializer.c"
  yy25:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '+':
 -	case '-':	goto yy26;
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy27;
 -	default:	goto yy18;
 +	if (yych <= ',') {
 +		if (yych != '+') goto yy18;
 +	} else {
 +		if (yych <= '-') goto yy26;
 +		if (yych <= '/') goto yy18;
 +		if (yych <= '9') goto yy27;
 +		goto yy18;
  	}
  yy26:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy27;
 -	default:	goto yy18;
 -	}
 +	if (yych <= '/') goto yy18;
 +	if (yych >= ':') goto yy18;
  yy27:
  	++YYCURSOR;
  	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  	yych = *YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy27;
 -	case ':':	goto yy29;
 -	default:	goto yy18;
 -	}
 -yy29:
 +	if (yych <= '/') goto yy18;
 +	if (yych <= '9') goto yy27;
 +	if (yych >= ';') goto yy18;
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '"':	goto yy30;
 -	default:	goto yy18;
 -	}
 -yy30:
 +	if (yych != '"') goto yy18;
  	++YYCURSOR;
 -#line 609 "ext/standard/var_unserializer.re"
 +#line 611 "ext/standard/var_unserializer.re"
  	{
  
  	INIT_PZVAL(*rval);
 @@ -762,65 +707,28 @@
  	return object_common2(UNSERIALIZE_PASSTHRU,
  			object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR));
  }
 -#line 766 "ext/standard/var_unserializer.c"
 +#line 711 "ext/standard/var_unserializer.c"
  yy32:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '+':	goto yy33;
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy34;
 -	default:	goto yy18;
 -	}
 +	if (yych == '+') goto yy33;
 +	if (yych <= '/') goto yy18;
 +	if (yych <= '9') goto yy34;
 +	goto yy18;
  yy33:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy34;
 -	default:	goto yy18;
 -	}
 +	if (yych <= '/') goto yy18;
 +	if (yych >= ':') goto yy18;
  yy34:
  	++YYCURSOR;
  	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  	yych = *YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy34;
 -	case ':':	goto yy36;
 -	default:	goto yy18;
 -	}
 -yy36:
 +	if (yych <= '/') goto yy18;
 +	if (yych <= '9') goto yy34;
 +	if (yych >= ';') goto yy18;
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '{':	goto yy37;
 -	default:	goto yy18;
 -	}
 -yy37:
 +	if (yych != '{') goto yy18;
  	++YYCURSOR;
 -#line 589 "ext/standard/var_unserializer.re"
 +#line 591 "ext/standard/var_unserializer.re"
  	{
  	long elements = parse_iv(start + 2);
  	/* use iv() not uiv() in order to check data range */
 @@ -840,65 +748,28 @@
  
  	return finish_nested_data(UNSERIALIZE_PASSTHRU);
  }
 -#line 844 "ext/standard/var_unserializer.c"
 +#line 752 "ext/standard/var_unserializer.c"
  yy39:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '+':	goto yy40;
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy41;
 -	default:	goto yy18;
 -	}
 +	if (yych == '+') goto yy40;
 +	if (yych <= '/') goto yy18;
 +	if (yych <= '9') goto yy41;
 +	goto yy18;
  yy40:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy41;
 -	default:	goto yy18;
 -	}
 +	if (yych <= '/') goto yy18;
 +	if (yych >= ':') goto yy18;
  yy41:
  	++YYCURSOR;
  	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  	yych = *YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy41;
 -	case ':':	goto yy43;
 -	default:	goto yy18;
 -	}
 -yy43:
 +	if (yych <= '/') goto yy18;
 +	if (yych <= '9') goto yy41;
 +	if (yych >= ';') goto yy18;
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '"':	goto yy44;
 -	default:	goto yy18;
 -	}
 -yy44:
 +	if (yych != '"') goto yy18;
  	++YYCURSOR;
 -#line 560 "ext/standard/var_unserializer.re"
 +#line 562 "ext/standard/var_unserializer.re"
  	{
  	size_t len, maxlen;
  	char *str;
 @@ -927,65 +798,28 @@
  	ZVAL_STRINGL(*rval, str, len, 0);
  	return 1;
  }
 -#line 931 "ext/standard/var_unserializer.c"
 +#line 802 "ext/standard/var_unserializer.c"
  yy46:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '+':	goto yy47;
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy48;
 -	default:	goto yy18;
 -	}
 +	if (yych == '+') goto yy47;
 +	if (yych <= '/') goto yy18;
 +	if (yych <= '9') goto yy48;
 +	goto yy18;
  yy47:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy48;
 -	default:	goto yy18;
 -	}
 +	if (yych <= '/') goto yy18;
 +	if (yych >= ':') goto yy18;
  yy48:
  	++YYCURSOR;
  	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
  	yych = *YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy48;
 -	case ':':	goto yy50;
 -	default:	goto yy18;
 -	}
 -yy50:
 +	if (yych <= '/') goto yy18;
 +	if (yych <= '9') goto yy48;
 +	if (yych >= ';') goto yy18;
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '"':	goto yy51;
 -	default:	goto yy18;
 -	}
 -yy51:
 +	if (yych != '"') goto yy18;
  	++YYCURSOR;
 -#line 532 "ext/standard/var_unserializer.re"
 +#line 534 "ext/standard/var_unserializer.re"
  	{
  	size_t len, maxlen;
  	char *str;
 @@ -1013,131 +847,95 @@
  	ZVAL_STRINGL(*rval, str, len, 1);
  	return 1;
  }
 -#line 1017 "ext/standard/var_unserializer.c"
 +#line 851 "ext/standard/var_unserializer.c"
  yy53:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '+':	goto yy57;
 -	case '-':	goto yy55;
 -	case '.':	goto yy60;
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy58;
 -	case 'I':	goto yy56;
 -	case 'N':	goto yy54;
 -	default:	goto yy18;
 +	if (yych <= '/') {
 +		if (yych <= ',') {
 +			if (yych == '+') goto yy57;
 +			goto yy18;
 +		} else {
 +			if (yych <= '-') goto yy55;
 +			if (yych <= '.') goto yy60;
 +			goto yy18;
 +		}
 +	} else {
 +		if (yych <= 'I') {
 +			if (yych <= '9') goto yy58;
 +			if (yych <= 'H') goto yy18;
 +			goto yy56;
 +		} else {
 +			if (yych != 'N') goto yy18;
 +		}
  	}
 -yy54:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case 'A':	goto yy76;
 -	default:	goto yy18;
 -	}
 +	if (yych == 'A') goto yy76;
 +	goto yy18;
  yy55:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '.':	goto yy60;
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy58;
 -	case 'I':	goto yy56;
 -	default:	goto yy18;
 +	if (yych <= '/') {
 +		if (yych == '.') goto yy60;
 +		goto yy18;
 +	} else {
 +		if (yych <= '9') goto yy58;
 +		if (yych != 'I') goto yy18;
  	}
  yy56:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case 'N':	goto yy72;
 -	default:	goto yy18;
 -	}
 +	if (yych == 'N') goto yy72;
 +	goto yy18;
  yy57:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '.':	goto yy60;
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy58;
 -	default:	goto yy18;
 -	}
 +	if (yych == '.') goto yy60;
 +	if (yych <= '/') goto yy18;
 +	if (yych >= ':') goto yy18;
  yy58:
  	++YYCURSOR;
  	if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
  	yych = *YYCURSOR;
 -	switch (yych) {
 -	case '.':	goto yy70;
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy58;
 -	case ';':	goto yy63;
 -	case 'E':
 -	case 'e':	goto yy65;
 -	default:	goto yy18;
 +	if (yych <= ':') {
 +		if (yych <= '.') {
 +			if (yych <= '-') goto yy18;
 +			goto yy70;
 +		} else {
 +			if (yych <= '/') goto yy18;
 +			if (yych <= '9') goto yy58;
 +			goto yy18;
 +		}
 +	} else {
 +		if (yych <= 'E') {
 +			if (yych <= ';') goto yy63;
 +			if (yych <= 'D') goto yy18;
 +			goto yy65;
 +		} else {
 +			if (yych == 'e') goto yy65;
 +			goto yy18;
 +		}
  	}
  yy60:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy61;
 -	default:	goto yy18;
 -	}
 +	if (yych <= '/') goto yy18;
 +	if (yych >= ':') goto yy18;
  yy61:
  	++YYCURSOR;
  	if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
  	yych = *YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy61;
 -	case ';':	goto yy63;
 -	case 'E':
 -	case 'e':	goto yy65;
 -	default:	goto yy18;
 +	if (yych <= ';') {
 +		if (yych <= '/') goto yy18;
 +		if (yych <= '9') goto yy61;
 +		if (yych <= ':') goto yy18;
 +	} else {
 +		if (yych <= 'E') {
 +			if (yych <= 'D') goto yy18;
 +			goto yy65;
 +		} else {
 +			if (yych == 'e') goto yy65;
 +			goto yy18;
 +		}
  	}
  yy63:
  	++YYCURSOR;
 -#line 522 "ext/standard/var_unserializer.re"
 +#line 524 "ext/standard/var_unserializer.re"
  	{
  #if SIZEOF_LONG == 4
  use_double:
 @@ -1147,109 +945,66 @@
  	ZVAL_DOUBLE(*rval, zend_strtod((const char *)start + 2, NULL));
  	return 1;
  }
 -#line 1151 "ext/standard/var_unserializer.c"
 +#line 949 "ext/standard/var_unserializer.c"
  yy65:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '+':
 -	case '-':	goto yy66;
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy67;
 -	default:	goto yy18;
 +	if (yych <= ',') {
 +		if (yych != '+') goto yy18;
 +	} else {
 +		if (yych <= '-') goto yy66;
 +		if (yych <= '/') goto yy18;
 +		if (yych <= '9') goto yy67;
 +		goto yy18;
  	}
  yy66:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '+':
 -	case '-':	goto yy69;
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy67;
 -	default:	goto yy18;
 +	if (yych <= ',') {
 +		if (yych == '+') goto yy69;
 +		goto yy18;
 +	} else {
 +		if (yych <= '-') goto yy69;
 +		if (yych <= '/') goto yy18;
 +		if (yych >= ':') goto yy18;
  	}
  yy67:
  	++YYCURSOR;
  	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  	yych = *YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy67;
 -	case ';':	goto yy63;
 -	default:	goto yy18;
 -	}
 +	if (yych <= '/') goto yy18;
 +	if (yych <= '9') goto yy67;
 +	if (yych == ';') goto yy63;
 +	goto yy18;
  yy69:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy67;
 -	default:	goto yy18;
 -	}
 +	if (yych <= '/') goto yy18;
 +	if (yych <= '9') goto yy67;
 +	goto yy18;
  yy70:
  	++YYCURSOR;
  	if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
  	yych = *YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy70;
 -	case ';':	goto yy63;
 -	case 'E':
 -	case 'e':	goto yy65;
 -	default:	goto yy18;
 +	if (yych <= ';') {
 +		if (yych <= '/') goto yy18;
 +		if (yych <= '9') goto yy70;
 +		if (yych <= ':') goto yy18;
 +		goto yy63;
 +	} else {
 +		if (yych <= 'E') {
 +			if (yych <= 'D') goto yy18;
 +			goto yy65;
 +		} else {
 +			if (yych == 'e') goto yy65;
 +			goto yy18;
 +		}
  	}
  yy72:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case 'F':	goto yy73;
 -	default:	goto yy18;
 -	}
 +	if (yych != 'F') goto yy18;
  yy73:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case ';':	goto yy74;
 -	default:	goto yy18;
 -	}
 -yy74:
 +	if (yych != ';') goto yy18;
  	++YYCURSOR;
 -#line 507 "ext/standard/var_unserializer.re"
 +#line 509 "ext/standard/var_unserializer.re"
  	{
  	*p = YYCURSOR;
  	INIT_PZVAL(*rval);
 @@ -1264,66 +1019,34 @@
  
  	return 1;
  }
 -#line 1268 "ext/standard/var_unserializer.c"
 +#line 1023 "ext/standard/var_unserializer.c"
  yy76:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case 'N':	goto yy73;
 -	default:	goto yy18;
 -	}
 +	if (yych == 'N') goto yy73;
 +	goto yy18;
  yy77:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '+':
 -	case '-':	goto yy78;
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy79;
 -	default:	goto yy18;
 +	if (yych <= ',') {
 +		if (yych != '+') goto yy18;
 +	} else {
 +		if (yych <= '-') goto yy78;
 +		if (yych <= '/') goto yy18;
 +		if (yych <= '9') goto yy79;
 +		goto yy18;
  	}
  yy78:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy79;
 -	default:	goto yy18;
 -	}
 +	if (yych <= '/') goto yy18;
 +	if (yych >= ':') goto yy18;
  yy79:
  	++YYCURSOR;
  	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  	yych = *YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy79;
 -	case ';':	goto yy81;
 -	default:	goto yy18;
 -	}
 -yy81:
 +	if (yych <= '/') goto yy18;
 +	if (yych <= '9') goto yy79;
 +	if (yych != ';') goto yy18;
  	++YYCURSOR;
 -#line 480 "ext/standard/var_unserializer.re"
 +#line 482 "ext/standard/var_unserializer.re"
  	{
  #if SIZEOF_LONG == 4
  	int digits = YYCURSOR - start - 3;
 @@ -1350,93 +1073,55 @@
  	ZVAL_LONG(*rval, parse_iv(start + 2));
  	return 1;
  }
 -#line 1354 "ext/standard/var_unserializer.c"
 +#line 1077 "ext/standard/var_unserializer.c"
  yy83:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':	goto yy84;
 -	default:	goto yy18;
 -	}
 -yy84:
 +	if (yych <= '/') goto yy18;
 +	if (yych >= '2') goto yy18;
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case ';':	goto yy85;
 -	default:	goto yy18;
 -	}
 -yy85:
 +	if (yych != ';') goto yy18;
  	++YYCURSOR;
 -#line 473 "ext/standard/var_unserializer.re"
 +#line 475 "ext/standard/var_unserializer.re"
  	{
  	*p = YYCURSOR;
  	INIT_PZVAL(*rval);
  	ZVAL_BOOL(*rval, parse_iv(start + 2));
  	return 1;
  }
 -#line 1377 "ext/standard/var_unserializer.c"
 +#line 1092 "ext/standard/var_unserializer.c"
  yy87:
  	++YYCURSOR;
 -#line 466 "ext/standard/var_unserializer.re"
 +#line 468 "ext/standard/var_unserializer.re"
  	{
  	*p = YYCURSOR;
  	INIT_PZVAL(*rval);
  	ZVAL_NULL(*rval);
  	return 1;
  }
 -#line 1387 "ext/standard/var_unserializer.c"
 +#line 1102 "ext/standard/var_unserializer.c"
  yy89:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '+':
 -	case '-':	goto yy90;
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy91;
 -	default:	goto yy18;
 +	if (yych <= ',') {
 +		if (yych != '+') goto yy18;
 +	} else {
 +		if (yych <= '-') goto yy90;
 +		if (yych <= '/') goto yy18;
 +		if (yych <= '9') goto yy91;
 +		goto yy18;
  	}
  yy90:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy91;
 -	default:	goto yy18;
 -	}
 +	if (yych <= '/') goto yy18;
 +	if (yych >= ':') goto yy18;
  yy91:
  	++YYCURSOR;
  	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  	yych = *YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy91;
 -	case ';':	goto yy93;
 -	default:	goto yy18;
 -	}
 -yy93:
 +	if (yych <= '/') goto yy18;
 +	if (yych <= '9') goto yy91;
 +	if (yych != ';') goto yy18;
  	++YYCURSOR;
 -#line 443 "ext/standard/var_unserializer.re"
 +#line 445 "ext/standard/var_unserializer.re"
  	{
  	long id;
  
 @@ -1459,60 +1144,30 @@
  	
  	return 1;
  }
 -#line 1463 "ext/standard/var_unserializer.c"
 +#line 1148 "ext/standard/var_unserializer.c"
  yy95:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '+':
 -	case '-':	goto yy96;
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy97;
 -	default:	goto yy18;
 +	if (yych <= ',') {
 +		if (yych != '+') goto yy18;
 +	} else {
 +		if (yych <= '-') goto yy96;
 +		if (yych <= '/') goto yy18;
 +		if (yych <= '9') goto yy97;
 +		goto yy18;
  	}
  yy96:
  	yych = *++YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy97;
 -	default:	goto yy18;
 -	}
 +	if (yych <= '/') goto yy18;
 +	if (yych >= ':') goto yy18;
  yy97:
  	++YYCURSOR;
  	if (YYLIMIT <= YYCURSOR) YYFILL(1);
  	yych = *YYCURSOR;
 -	switch (yych) {
 -	case '0':
 -	case '1':
 -	case '2':
 -	case '3':
 -	case '4':
 -	case '5':
 -	case '6':
 -	case '7':
 -	case '8':
 -	case '9':	goto yy97;
 -	case ';':	goto yy99;
 -	default:	goto yy18;
 -	}
 -yy99:
 +	if (yych <= '/') goto yy18;
 +	if (yych <= '9') goto yy97;
 +	if (yych != ';') goto yy18;
  	++YYCURSOR;
 -#line 422 "ext/standard/var_unserializer.re"
 +#line 424 "ext/standard/var_unserializer.re"
  	{
  	long id;
  
 @@ -1533,9 +1188,9 @@
  	
  	return 1;
  }
 -#line 1537 "ext/standard/var_unserializer.c"
 +#line 1192 "ext/standard/var_unserializer.c"
  }
 -#line 742 "ext/standard/var_unserializer.re"
 +#line 744 "ext/standard/var_unserializer.re"
  
  
  	return 0;
  Index: ext/standard/var.c
  ===================================================================
  --- ext/standard/var.c	(revision 318013)
  +++ ext/standard/var.c	(working copy)
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Mar 19 04:01:31 2024 UTC