- php_http_buffer *dup = php_http_buffer_clone(buf);
- if (PHP_HTTP_BUFFER_NOMEM == php_http_buffer_append(dup, buf->data, buf->used)) {
- php_http_buffer_free(&dup);
+ int free_to = !to;
+
+ to = php_http_buffer_clone(from, to);
+
+ if (PHP_HTTP_BUFFER_NOMEM == php_http_buffer_append(to, from->data, from->used)) {
+ if (free_to) {
+ php_http_buffer_free(&to);
+ } else {
+ php_http_buffer_dtor(to);
+ }