@@ -205,12 +205,13 @@ static zend_always_inline zend_string *zend_string_realloc(zend_string *s, size_
205
205
ZSTR_LEN (ret ) = len ;
206
206
zend_string_forget_hash_val (ret );
207
207
return ret ;
208
- } else {
209
- GC_DELREF (s );
210
208
}
211
209
}
212
210
ret = zend_string_alloc (len , persistent );
213
211
memcpy (ZSTR_VAL (ret ), ZSTR_VAL (s ), MIN (len , ZSTR_LEN (s )) + 1 );
212
+ if (!ZSTR_IS_INTERNED (s )) {
213
+ GC_DELREF (s );
214
+ }
214
215
return ret ;
215
216
}
216
217
@@ -225,12 +226,13 @@ static zend_always_inline zend_string *zend_string_extend(zend_string *s, size_t
225
226
ZSTR_LEN (ret ) = len ;
226
227
zend_string_forget_hash_val (ret );
227
228
return ret ;
228
- } else {
229
- GC_DELREF (s );
230
229
}
231
230
}
232
231
ret = zend_string_alloc (len , persistent );
233
232
memcpy (ZSTR_VAL (ret ), ZSTR_VAL (s ), ZSTR_LEN (s ) + 1 );
233
+ if (!ZSTR_IS_INTERNED (s )) {
234
+ GC_DELREF (s );
235
+ }
234
236
return ret ;
235
237
}
236
238
@@ -245,12 +247,13 @@ static zend_always_inline zend_string *zend_string_truncate(zend_string *s, size
245
247
ZSTR_LEN (ret ) = len ;
246
248
zend_string_forget_hash_val (ret );
247
249
return ret ;
248
- } else {
249
- GC_DELREF (s );
250
250
}
251
251
}
252
252
ret = zend_string_alloc (len , persistent );
253
253
memcpy (ZSTR_VAL (ret ), ZSTR_VAL (s ), len + 1 );
254
+ if (!ZSTR_IS_INTERNED (s )) {
255
+ GC_DELREF (s );
256
+ }
254
257
return ret ;
255
258
}
256
259
@@ -264,12 +267,13 @@ static zend_always_inline zend_string *zend_string_safe_realloc(zend_string *s,
264
267
ZSTR_LEN (ret ) = (n * m ) + l ;
265
268
zend_string_forget_hash_val (ret );
266
269
return ret ;
267
- } else {
268
- GC_DELREF (s );
269
270
}
270
271
}
271
272
ret = zend_string_safe_alloc (n , m , l , persistent );
272
273
memcpy (ZSTR_VAL (ret ), ZSTR_VAL (s ), MIN ((n * m ) + l , ZSTR_LEN (s )) + 1 );
274
+ if (!ZSTR_IS_INTERNED (s )) {
275
+ GC_DELREF (s );
276
+ }
273
277
return ret ;
274
278
}
275
279
0 commit comments