From baa0ab00ad47e17106e3eb261437c5a2474fa015 Mon Sep 17 00:00:00 2001 From: Andrei Zmievski Date: Mon, 18 Jul 2005 17:34:38 +0000 Subject: [PATCH] Use HAVE_REGEX_T_RE_MAGIC to fix compilation problem on systems where re_magic is not provided publicly. --- ext/ereg/ereg.c | 16 +++++++++++++++- ext/standard/reg.c | 16 +++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/ext/ereg/ereg.c b/ext/ereg/ereg.c index ed07324599..0d5273a96a 100644 --- a/ext/ereg/ereg.c +++ b/ext/ereg/ereg.c @@ -46,6 +46,7 @@ static int _php_regcomp(regex_t *preg, const char *pattern, int cflags) if(zend_hash_find(®(ht_rc), (char *) pattern, patlen+1, (void **) &rc) == SUCCESS && rc->cflags == cflags) { +#ifdef HAVE_REGEX_T_RE_MAGIC /* * We use a saved magic number to see whether cache is corrupted, and if it * is, we flush it and compile the pattern from scratch. @@ -73,7 +74,20 @@ static int _php_regcomp(regex_t *preg, const char *pattern, int cflags) zend_hash_update(®(ht_rc), (char *) pattern, patlen+1, (void *) &rcp, sizeof(rcp), NULL); } - +#else + memcpy(preg, &rc->preg, sizeof(*preg)); + } else { + r = regcomp(preg, pattern, cflags); + if(!r) { + reg_cache rcp; + + rcp.cflags = cflags; + memcpy(&rcp.preg, preg, sizeof(*preg)); + zend_hash_update(®(ht_rc), (char *) pattern, patlen+1, + (void *) &rcp, sizeof(rcp), NULL); + } + } +#endif return r; } /* }}} */ diff --git a/ext/standard/reg.c b/ext/standard/reg.c index ed07324599..0d5273a96a 100644 --- a/ext/standard/reg.c +++ b/ext/standard/reg.c @@ -46,6 +46,7 @@ static int _php_regcomp(regex_t *preg, const char *pattern, int cflags) if(zend_hash_find(®(ht_rc), (char *) pattern, patlen+1, (void **) &rc) == SUCCESS && rc->cflags == cflags) { +#ifdef HAVE_REGEX_T_RE_MAGIC /* * We use a saved magic number to see whether cache is corrupted, and if it * is, we flush it and compile the pattern from scratch. @@ -73,7 +74,20 @@ static int _php_regcomp(regex_t *preg, const char *pattern, int cflags) zend_hash_update(®(ht_rc), (char *) pattern, patlen+1, (void *) &rcp, sizeof(rcp), NULL); } - +#else + memcpy(preg, &rc->preg, sizeof(*preg)); + } else { + r = regcomp(preg, pattern, cflags); + if(!r) { + reg_cache rcp; + + rcp.cflags = cflags; + memcpy(&rcp.preg, preg, sizeof(*preg)); + zend_hash_update(®(ht_rc), (char *) pattern, patlen+1, + (void *) &rcp, sizeof(rcp), NULL); + } + } +#endif return r; } /* }}} */ -- 2.40.0