Fixed ADD_INTERNED_STRING() logic to support strings that are already interned. (Terry)

This commit is contained in:
Dmitry Stogov 2014-01-09 13:48:08 +04:00
parent 748e707bf9
commit b5fbde9c5b

View file

@ -33,11 +33,13 @@
#if ZEND_EXTENSION_API_NO > PHP_5_3_X_API_NO #if ZEND_EXTENSION_API_NO > PHP_5_3_X_API_NO
# define ADD_INTERNED_STRING(str, len) do { \ # define ADD_INTERNED_STRING(str, len) do { \
const char *tmp = accel_new_interned_string((str), (len), !IS_INTERNED((str)) TSRMLS_CC); \ if (!IS_INTERNED(str)) { \
if (tmp != (str)) { \ const char *tmp = accel_new_interned_string((str), (len), 1 TSRMLS_CC); \
(str) = (char*)tmp; \ if (tmp != (str)) { \
} else { \ (str) = (char*)tmp; \
ADD_DUP_SIZE((str), (len)); \ } else { \
ADD_DUP_SIZE((str), (len)); \
} \
} \ } \
} while (0) } while (0)
#else #else