@@ -186,12 +186,13 @@ static zend_always_inline zend_string *zend_string_realloc(zend_string *s, size_
186
186
ZSTR_LEN (ret ) = len ;
187
187
zend_string_forget_hash_val (ret );
188
188
return ret ;
189
- } else {
190
- GC_DELREF (s );
191
189
}
192
190
}
193
191
ret = zend_string_alloc (len , persistent );
194
192
memcpy (ZSTR_VAL (ret ), ZSTR_VAL (s ), MIN (len , ZSTR_LEN (s )) + 1 );
193
+ if (!ZSTR_IS_INTERNED (s )) {
194
+ GC_DELREF (s );
195
+ }
195
196
return ret ;
196
197
}
197
198
@@ -206,12 +207,13 @@ static zend_always_inline zend_string *zend_string_extend(zend_string *s, size_t
206
207
ZSTR_LEN (ret ) = len ;
207
208
zend_string_forget_hash_val (ret );
208
209
return ret ;
209
- } else {
210
- GC_DELREF (s );
211
210
}
212
211
}
213
212
ret = zend_string_alloc (len , persistent );
214
213
memcpy (ZSTR_VAL (ret ), ZSTR_VAL (s ), ZSTR_LEN (s ) + 1 );
214
+ if (!ZSTR_IS_INTERNED (s )) {
215
+ GC_DELREF (s );
216
+ }
215
217
return ret ;
216
218
}
217
219
@@ -226,12 +228,13 @@ static zend_always_inline zend_string *zend_string_truncate(zend_string *s, size
226
228
ZSTR_LEN (ret ) = len ;
227
229
zend_string_forget_hash_val (ret );
228
230
return ret ;
229
- } else {
230
- GC_DELREF (s );
231
231
}
232
232
}
233
233
ret = zend_string_alloc (len , persistent );
234
234
memcpy (ZSTR_VAL (ret ), ZSTR_VAL (s ), len + 1 );
235
+ if (!ZSTR_IS_INTERNED (s )) {
236
+ GC_DELREF (s );
237
+ }
235
238
return ret ;
236
239
}
237
240
@@ -245,12 +248,13 @@ static zend_always_inline zend_string *zend_string_safe_realloc(zend_string *s,
245
248
ZSTR_LEN (ret ) = (n * m ) + l ;
246
249
zend_string_forget_hash_val (ret );
247
250
return ret ;
248
- } else {
249
- GC_DELREF (s );
250
251
}
251
252
}
252
253
ret = zend_string_safe_alloc (n , m , l , persistent );
253
254
memcpy (ZSTR_VAL (ret ), ZSTR_VAL (s ), MIN ((n * m ) + l , ZSTR_LEN (s )) + 1 );
255
+ if (!ZSTR_IS_INTERNED (s )) {
256
+ GC_DELREF (s );
257
+ }
254
258
return ret ;
255
259
}
256
260
0 commit comments