]> granicus.if.org Git - php/commitdiff
Correct option caching
authorAndrey Hristov <andrey@php.net>
Mon, 5 Jul 1999 15:25:51 +0000 (15:25 +0000)
committerAndrey Hristov <andrey@php.net>
Mon, 5 Jul 1999 15:25:51 +0000 (15:25 +0000)
ext/pcre/pcre.c
ext/pcre/php_pcre.h

index 3c8ccf2afb63e60a70a1b5f0c3cdf124d796d45c..6a9ca26b90fa47ec85ecbefe4878c9b1ad0136e9 100644 (file)
@@ -169,6 +169,7 @@ static pcre* _pcre_get_compiled_regex(char *regex, pcre_extra *extra, int *preg_
        char                            *pattern;
        int                                      regex_len;
        int                                      do_study = 0;
+       int                                      poptions = 0;
        pcre_cache_entry        *pce;
        pcre_cache_entry         new_entry;
        PCRE_LS_FETCH();
@@ -178,6 +179,7 @@ static pcre* _pcre_get_compiled_regex(char *regex, pcre_extra *extra, int *preg_
        regex_len = strlen(regex);
        if (zend_hash_find(&PCRE_G(pcre_cache), regex, regex_len+1, (void **)&pce) == SUCCESS) {
                extra = pce->extra;
+               *preg_options = pce->preg_options;
                return pce->re;
        }
        
@@ -240,7 +242,7 @@ static pcre* _pcre_get_compiled_regex(char *regex, pcre_extra *extra, int *preg_
                        case 'X':       coptions |= PCRE_EXTRA;                 break;
 
                        /* Custom preg options */
-                       case 'e':       *preg_options |= PREG_REPLACE_EVAL; break;
+                       case 'e':       poptions |= PREG_REPLACE_EVAL; break;
                        
                        case ' ':
                        case '\n':
@@ -275,11 +277,14 @@ static pcre* _pcre_get_compiled_regex(char *regex, pcre_extra *extra, int *preg_
                }
        }
 
+       *preg_options = poptions;
+       
        efree(pattern);
 
        /* Store the compiled pattern and extra info in the cache. */
        new_entry.re = re;
        new_entry.extra = extra;
+       new_entry.preg_options = poptions;
        zend_hash_update(&PCRE_G(pcre_cache), regex, regex_len+1, (void *)&new_entry,
                                                sizeof(pcre_cache_entry), NULL);
 
index 38042366f4d1640d8282d5ac77bda40df4cdd5b5..a367da3bd43137cfb36d545d6c957e1f91990a37 100644 (file)
@@ -54,6 +54,7 @@ extern zend_module_entry pcre_module_entry;
 typedef struct {
         pcre *re;
         pcre_extra *extra;
+       int preg_options;
 } pcre_cache_entry;
 
 typedef struct {