From 109346779a5929d7fd18aa0dc28732b51cc49d0a Mon Sep 17 00:00:00 2001 From: Pierrick Charron Date: Sun, 4 Dec 2011 01:34:54 +0000 Subject: Fixed bug #60439curl_copy_handle segfault when used with CURLOPT_PROGRESSFUNCTION --- ext/curl/interface.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'ext/curl/interface.c') diff --git a/ext/curl/interface.c b/ext/curl/interface.c index af6133e533..8bbe454ed4 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -1649,11 +1649,18 @@ PHP_FUNCTION(curl_copy_handle) zval_add_ref(&ch->handlers->write_header->func_name); dupch->handlers->write_header->func_name = ch->handlers->write_header->func_name; } + + if (ch->handlers->progress->func_name) { + zval_add_ref(&ch->handlers->progress->func_name); + dupch->handlers->progress->func_name = ch->handlers->progress->func_name; + } + dupch->handlers->progress->method = ch->handlers->progress->method; curl_easy_setopt(dupch->cp, CURLOPT_ERRORBUFFER, dupch->err.str); curl_easy_setopt(dupch->cp, CURLOPT_FILE, (void *) dupch); curl_easy_setopt(dupch->cp, CURLOPT_INFILE, (void *) dupch); curl_easy_setopt(dupch->cp, CURLOPT_WRITEHEADER, (void *) dupch); + curl_easy_setopt(dupch->cp, CURLOPT_PROGRESSDATA, (void *) dupch); efree(dupch->to_free); dupch->to_free = ch->to_free; -- cgit v1.2.1