summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGopal Vijayaraghavan <gopalv@php.net>2011-07-27 23:34:49 +0000
committerGopal Vijayaraghavan <gopalv@php.net>2011-07-27 23:34:49 +0000
commitbe217d08a47e5613cfa3b91aea6a0959b97fc8eb (patch)
treec90995da31bee57c6d298553923b686bf2de0784
parent15383e046e27d211d8ac2d78719eb039ec968e9b (diff)
downloadphp-git-be217d08a47e5613cfa3b91aea6a0959b97fc8eb.tar.gz
Allow zend_is_interned_string to be pluggable
-rw-r--r--Zend/zend_string.c8
-rw-r--r--Zend/zend_string.h3
2 files changed, 10 insertions, 1 deletions
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