meta->root_len = total_len;
if (meta->name != mysqlnd_empty_string) {
- meta->sname = zend_string_init(meta->name, meta->name_length, packet->persistent_alloc);
+ meta->sname = zend_new_interned_string(zend_string_init(meta->name, meta->name_length, packet->persistent_alloc));
} else {
meta->sname = ZSTR_EMPTY_ALLOC();
}
* it creates interned strings in shared memory when saves a script.
* Such interned strings are shared across all PHP processes
*/
-static zend_string *accel_new_interned_string_for_php(zend_string *str)
-{
- return str;
-}
static void accel_interned_strings_restore_state(void)
{
return p->key;
}
+static zend_string *accel_new_interned_string_for_php(zend_string *str)
+{
+ if (ZCG(counted)) {
+ zend_string *ret = accel_find_interned_string(str);
+
+ if (ret) {
+ zend_string_release(str);
+ return ret;
+ }
+ }
+ return str;
+}
+
/* Copy PHP interned strings from PHP process memory into the shared memory */
static void accel_copy_permanent_strings(zend_new_interned_string_func_t new_interned_string)
{