diff options
| author | Dmitry Stogov <dmitry@php.net> | 2010-04-20 11:05:54 +0000 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@php.net> | 2010-04-20 11:05:54 +0000 |
| commit | dd5c478be61a0ef94b54837cfa875c964356e14f (patch) | |
| tree | afdce3c072b3c27f7721c6f24895a147a9f825b4 /Zend/zend.h | |
| parent | 94dd83722b57c4613ccf8371a3c4f50ffc274584 (diff) | |
| download | php-git-dd5c478be61a0ef94b54837cfa875c964356e14f.tar.gz | |
Added concept of interned strings. All strings constants known at compile time are allocated in a single copy and never changed.
Diffstat (limited to 'Zend/zend.h')
| -rw-r--r-- | Zend/zend.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/Zend/zend.h b/Zend/zend.h index fce65e0337..6348e5997c 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -237,6 +237,7 @@ char *alloca (); #include "zend_alloc.h" #include "zend_types.h" +#include "zend_string.h" #ifdef HAVE_LIMITS_H # include <limits.h> @@ -599,8 +600,8 @@ END_EXTERN_C() /* FIXME: Check if we can save if (ptr) too */ -#define STR_FREE(ptr) if (ptr) { efree(ptr); } -#define STR_FREE_REL(ptr) if (ptr) { efree_rel(ptr); } +#define STR_FREE(ptr) if (ptr && !IS_INTERNED(ptr)) { efree(ptr); } +#define STR_FREE_REL(ptr) if (ptr && !IS_INTERNED(ptr)) { efree_rel(ptr); } #define STR_EMPTY_ALLOC() estrndup("", sizeof("")-1) |
