From be217d08a47e5613cfa3b91aea6a0959b97fc8eb Mon Sep 17 00:00:00 2001 From: Gopal Vijayaraghavan Date: Wed, 27 Jul 2011 23:34:49 +0000 Subject: [PATCH] Allow zend_is_interned_string to be pluggable --- Zend/zend_string.c | 8 ++++++++ Zend/zend_string.h | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Zend/zend_string.c b/Zend/zend_string.c index 949c191582..77b165ab20 100644 --- a/Zend/zend_string.c +++ b/Zend/zend_string.c @@ -30,10 +30,12 @@ #endif ZEND_API const char *(*zend_new_interned_string)(const char *str, int len, int free_src TSRMLS_DC); +ZEND_API zend_bool (*zend_is_interned_string)(const char *str TSRMLS_DC); ZEND_API void (*zend_interned_strings_snapshot)(TSRMLS_D); ZEND_API void (*zend_interned_strings_restore)(TSRMLS_D); static const char *zend_new_interned_string_int(const char *str, int len, int free_src TSRMLS_DC); +static zend_bool zend_is_interned_string_int(const char *str TSRMLS_DC); static void zend_interned_strings_snapshot_int(TSRMLS_D); static void zend_interned_strings_restore_int(TSRMLS_D); @@ -64,6 +66,7 @@ void zend_interned_strings_init(TSRMLS_D) #endif zend_new_interned_string = zend_new_interned_string_int; + zend_is_interned_string = zend_is_interned_string_int; zend_interned_strings_snapshot = zend_interned_strings_snapshot_int; zend_interned_strings_restore = zend_interned_strings_restore_int; } @@ -177,6 +180,11 @@ static const char *zend_new_interned_string_int(const char *arKey, int nKeyLengt #endif } +static zend_bool zend_is_interned_string_int(const char *s TSRMLS_DC) +{ + return (((s) >= CG(interned_strings_start)) && ((s) < CG(interned_strings_end))); +} + static void zend_interned_strings_snapshot_int(TSRMLS_D) { CG(interned_strings_snapshot_top) = CG(interned_strings_top); diff --git a/Zend/zend_string.h b/Zend/zend_string.h index a130fbcc38..5dcc950faf 100644 --- a/Zend/zend_string.h +++ b/Zend/zend_string.h @@ -24,6 +24,7 @@ #include "zend.h" ZEND_API extern const char *(*zend_new_interned_string)(const char *str, int len, int free_src TSRMLS_DC); +ZEND_API extern zend_bool (*zend_is_interned_string)(const char *str TSRMLS_DC); ZEND_API extern void (*zend_interned_strings_snapshot)(TSRMLS_D); ZEND_API extern void (*zend_interned_strings_restore)(TSRMLS_D); @@ -33,7 +34,7 @@ void zend_interned_strings_dtor(TSRMLS_D); #ifndef ZTS #define IS_INTERNED(s) \ - (((s) >= CG(interned_strings_start)) && ((s) < CG(interned_strings_end))) + (zend_is_interned_string ? zend_is_interned_string((s) TSRMLS_CC) : 0) #else -- 2.40.0