]> granicus.if.org Git - php/commitdiff
Added RC_DEBUG exception
authorDmitry Stogov <dmitry@zend.com>
Fri, 3 Nov 2017 08:15:20 +0000 (11:15 +0300)
committerDmitry Stogov <dmitry@zend.com>
Fri, 3 Nov 2017 08:15:20 +0000 (11:15 +0300)
ext/standard/url_scanner_ex.c
ext/standard/url_scanner_ex.re

index 2698b96f055ed95353832ed9fa3b437219676040..c357dca8c7a8a0d8e5bb2617d04cde1ee3f8ed34 100644 (file)
@@ -89,13 +89,17 @@ static int php_ini_on_update_tags(zend_ini_entry *entry, zend_string *new_value,
                if (val) {
                        char *q;
                        size_t keylen;
+                       zend_string *str;
 
                        *val++ = '\0';
                        for (q = key; *q; q++) {
                                *q = tolower(*q);
                        }
                        keylen = q - key;
-                       zend_hash_str_add_mem(ctx->tags, key, keylen, val, strlen(val)+1);
+                       str = zend_string_init(key, keylen, 1);
+                       GC_MAKE_PERSISTENT_LOCAL(str);
+                       zend_hash_add_mem(ctx->tags, str, val, strlen(val)+1);
+                       zend_string_release(str);
                }
        }
 
@@ -170,7 +174,7 @@ PHP_INI_BEGIN()
        STD_PHP_INI_ENTRY("url_rewriter.hosts", "", PHP_INI_ALL, OnUpdateOutputHosts, url_adapt_session_hosts_ht, php_basic_globals, basic_globals)
 PHP_INI_END()
 
-#line 177 "ext/standard/url_scanner_ex.re"
+#line 181 "ext/standard/url_scanner_ex.re"
 
 
 #define YYFILL(n) goto done
@@ -511,7 +515,7 @@ state_plain_begin:
 state_plain:
        start = YYCURSOR;
 
-#line 515 "ext/standard/url_scanner_ex.c"
+#line 519 "ext/standard/url_scanner_ex.c"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -561,22 +565,22 @@ yy2:
        if (yybm[0+yych] & 128) {
                goto yy2;
        }
-#line 518 "ext/standard/url_scanner_ex.re"
+#line 522 "ext/standard/url_scanner_ex.re"
        { passthru(STD_ARGS); goto state_plain; }
-#line 567 "ext/standard/url_scanner_ex.c"
+#line 571 "ext/standard/url_scanner_ex.c"
 yy5:
        ++YYCURSOR;
-#line 517 "ext/standard/url_scanner_ex.re"
+#line 521 "ext/standard/url_scanner_ex.re"
        { passthru(STD_ARGS); STATE = STATE_TAG; goto state_tag; }
-#line 572 "ext/standard/url_scanner_ex.c"
+#line 576 "ext/standard/url_scanner_ex.c"
 }
-#line 519 "ext/standard/url_scanner_ex.re"
+#line 523 "ext/standard/url_scanner_ex.re"
 
 
 state_tag:
        start = YYCURSOR;
 
-#line 580 "ext/standard/url_scanner_ex.c"
+#line 584 "ext/standard/url_scanner_ex.c"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -619,9 +623,9 @@ state_tag:
                goto yy11;
        }
        ++YYCURSOR;
-#line 525 "ext/standard/url_scanner_ex.re"
+#line 529 "ext/standard/url_scanner_ex.re"
        { passthru(STD_ARGS); goto state_plain_begin; }
-#line 625 "ext/standard/url_scanner_ex.c"
+#line 629 "ext/standard/url_scanner_ex.c"
 yy11:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -629,11 +633,11 @@ yy11:
        if (yybm[0+yych] & 128) {
                goto yy11;
        }
-#line 524 "ext/standard/url_scanner_ex.re"
+#line 528 "ext/standard/url_scanner_ex.re"
        { handle_tag(STD_ARGS); /* Sets STATE */; passthru(STD_ARGS); if (STATE == STATE_PLAIN) goto state_plain; else goto state_next_arg; }
-#line 635 "ext/standard/url_scanner_ex.c"
+#line 639 "ext/standard/url_scanner_ex.c"
 }
-#line 526 "ext/standard/url_scanner_ex.re"
+#line 530 "ext/standard/url_scanner_ex.re"
 
 
 state_next_arg_begin:
@@ -642,7 +646,7 @@ state_next_arg_begin:
 state_next_arg:
        start = YYCURSOR;
 
-#line 646 "ext/standard/url_scanner_ex.c"
+#line 650 "ext/standard/url_scanner_ex.c"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -698,9 +702,9 @@ state_next_arg:
 yy16:
        ++YYCURSOR;
 yy17:
-#line 537 "ext/standard/url_scanner_ex.re"
+#line 541 "ext/standard/url_scanner_ex.re"
        { passthru(STD_ARGS); goto state_plain_begin; }
-#line 704 "ext/standard/url_scanner_ex.c"
+#line 708 "ext/standard/url_scanner_ex.c"
 yy18:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -708,30 +712,30 @@ yy18:
        if (yybm[0+yych] & 128) {
                goto yy18;
        }
-#line 535 "ext/standard/url_scanner_ex.re"
+#line 539 "ext/standard/url_scanner_ex.re"
        { passthru(STD_ARGS); goto state_next_arg; }
-#line 714 "ext/standard/url_scanner_ex.c"
+#line 718 "ext/standard/url_scanner_ex.c"
 yy21:
        yych = *++YYCURSOR;
        if (yych != '>') goto yy17;
 yy22:
        ++YYCURSOR;
-#line 534 "ext/standard/url_scanner_ex.re"
+#line 538 "ext/standard/url_scanner_ex.re"
        { passthru(STD_ARGS); handle_form(STD_ARGS); goto state_plain_begin; }
-#line 722 "ext/standard/url_scanner_ex.c"
+#line 726 "ext/standard/url_scanner_ex.c"
 yy24:
        ++YYCURSOR;
-#line 536 "ext/standard/url_scanner_ex.re"
+#line 540 "ext/standard/url_scanner_ex.re"
        { --YYCURSOR; STATE = STATE_ARG; goto state_arg; }
-#line 727 "ext/standard/url_scanner_ex.c"
+#line 731 "ext/standard/url_scanner_ex.c"
 }
-#line 538 "ext/standard/url_scanner_ex.re"
+#line 542 "ext/standard/url_scanner_ex.re"
 
 
 state_arg:
        start = YYCURSOR;
 
-#line 735 "ext/standard/url_scanner_ex.c"
+#line 739 "ext/standard/url_scanner_ex.c"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -776,9 +780,9 @@ state_arg:
        if (yych <= 'z') goto yy30;
 yy28:
        ++YYCURSOR;
-#line 544 "ext/standard/url_scanner_ex.re"
+#line 548 "ext/standard/url_scanner_ex.re"
        { passthru(STD_ARGS); STATE = STATE_NEXT_ARG; goto state_next_arg; }
-#line 782 "ext/standard/url_scanner_ex.c"
+#line 786 "ext/standard/url_scanner_ex.c"
 yy30:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -786,17 +790,17 @@ yy30:
        if (yybm[0+yych] & 128) {
                goto yy30;
        }
-#line 543 "ext/standard/url_scanner_ex.re"
+#line 547 "ext/standard/url_scanner_ex.re"
        { passthru(STD_ARGS); handle_arg(STD_ARGS); STATE = STATE_BEFORE_VAL; goto state_before_val; }
-#line 792 "ext/standard/url_scanner_ex.c"
+#line 796 "ext/standard/url_scanner_ex.c"
 }
-#line 545 "ext/standard/url_scanner_ex.re"
+#line 549 "ext/standard/url_scanner_ex.re"
 
 
 state_before_val:
        start = YYCURSOR;
 
-#line 800 "ext/standard/url_scanner_ex.c"
+#line 804 "ext/standard/url_scanner_ex.c"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -839,9 +843,9 @@ state_before_val:
        if (yych == '=') goto yy38;
        ++YYCURSOR;
 yy36:
-#line 551 "ext/standard/url_scanner_ex.re"
+#line 555 "ext/standard/url_scanner_ex.re"
        { --YYCURSOR; goto state_next_arg_begin; }
-#line 845 "ext/standard/url_scanner_ex.c"
+#line 849 "ext/standard/url_scanner_ex.c"
 yy37:
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == ' ') goto yy41;
@@ -853,9 +857,9 @@ yy38:
        if (yybm[0+yych] & 128) {
                goto yy38;
        }
-#line 550 "ext/standard/url_scanner_ex.re"
+#line 554 "ext/standard/url_scanner_ex.re"
        { passthru(STD_ARGS); STATE = STATE_VAL; goto state_val; }
-#line 859 "ext/standard/url_scanner_ex.c"
+#line 863 "ext/standard/url_scanner_ex.c"
 yy41:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -865,14 +869,14 @@ yy41:
        YYCURSOR = YYMARKER;
        goto yy36;
 }
-#line 552 "ext/standard/url_scanner_ex.re"
+#line 556 "ext/standard/url_scanner_ex.re"
 
 
 
 state_val:
        start = YYCURSOR;
 
-#line 876 "ext/standard/url_scanner_ex.c"
+#line 880 "ext/standard/url_scanner_ex.c"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -925,15 +929,15 @@ yy46:
        if (yybm[0+yych] & 32) {
                goto yy46;
        }
-#line 560 "ext/standard/url_scanner_ex.re"
+#line 564 "ext/standard/url_scanner_ex.re"
        { handle_val(STD_ARGS, 0, ' '); goto state_next_arg_begin; }
-#line 931 "ext/standard/url_scanner_ex.c"
+#line 935 "ext/standard/url_scanner_ex.c"
 yy49:
        ++YYCURSOR;
 yy50:
-#line 561 "ext/standard/url_scanner_ex.re"
+#line 565 "ext/standard/url_scanner_ex.re"
        { passthru(STD_ARGS); goto state_next_arg_begin; }
-#line 937 "ext/standard/url_scanner_ex.c"
+#line 941 "ext/standard/url_scanner_ex.c"
 yy51:
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '>') goto yy50;
@@ -956,9 +960,9 @@ yy55:
        goto yy50;
 yy56:
        ++YYCURSOR;
-#line 558 "ext/standard/url_scanner_ex.re"
+#line 562 "ext/standard/url_scanner_ex.re"
        { handle_val(STD_ARGS, 1, '"'); goto state_next_arg_begin; }
-#line 962 "ext/standard/url_scanner_ex.c"
+#line 966 "ext/standard/url_scanner_ex.c"
 yy58:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -969,11 +973,11 @@ yy59:
        }
        if (yych >= '(') goto yy55;
        ++YYCURSOR;
-#line 559 "ext/standard/url_scanner_ex.re"
+#line 563 "ext/standard/url_scanner_ex.re"
        { handle_val(STD_ARGS, 1, '\''); goto state_next_arg_begin; }
-#line 975 "ext/standard/url_scanner_ex.c"
+#line 979 "ext/standard/url_scanner_ex.c"
 }
-#line 562 "ext/standard/url_scanner_ex.re"
+#line 566 "ext/standard/url_scanner_ex.re"
 
 
 stop:
index a06e8f24b474ffafb6e57cbbbb1dd7f7eb24750e..6d4402fc7fe79c6d6e054f5a3b16438b3fba2a6f 100644 (file)
@@ -87,13 +87,17 @@ static int php_ini_on_update_tags(zend_ini_entry *entry, zend_string *new_value,
                if (val) {
                        char *q;
                        size_t keylen;
+                       zend_string *str;
 
                        *val++ = '\0';
                        for (q = key; *q; q++) {
                                *q = tolower(*q);
                        }
                        keylen = q - key;
-                       zend_hash_str_add_mem(ctx->tags, key, keylen, val, strlen(val)+1);
+                       str = zend_string_init(key, keylen, 1);
+                       GC_MAKE_PERSISTENT_LOCAL(str);
+                       zend_hash_add_mem(ctx->tags, str, val, strlen(val)+1);
+                       zend_string_release(str);
                }
        }