From 864dcf74ccbd1eacb3fc7d54c87fe30dc68a8538 Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Wed, 6 Feb 2019 11:38:50 -0800 Subject: [PATCH] Set length on cURL write --- project/src/net/curl/CURLBindings.cpp | 4 ++-- src/lime/net/curl/CURL.hx | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/project/src/net/curl/CURLBindings.cpp b/project/src/net/curl/CURLBindings.cpp index 8e9c91d30..53ffe5bff 100644 --- a/project/src/net/curl/CURLBindings.cpp +++ b/project/src/net/curl/CURLBindings.cpp @@ -611,7 +611,7 @@ namespace lime { value _bytes = bytes->Value ((value)bytesRoot->Get ()); curl_gc_mutex.Unlock (); - length = val_int ((value)writeCallback->Call (_bytes)); + length = val_int ((value)writeCallback->Call (_bytes, alloc_int (position))); curl_gc_mutex.Lock (); if (length == CURL_WRITEFUNC_PAUSE) { @@ -715,7 +715,7 @@ namespace lime { writeBufferPosition[easy_handle] = 0; curl_gc_mutex.Unlock (); - length = *((int*)writeCallback->Call (bytes)); + length = *((int*)writeCallback->Call (bytes, &position)); curl_gc_mutex.Lock (); if (length == CURL_WRITEFUNC_PAUSE) { diff --git a/src/lime/net/curl/CURL.hx b/src/lime/net/curl/CURL.hx index 7b7cc1a9e..dd84bbfbe 100644 --- a/src/lime/net/curl/CURL.hx +++ b/src/lime/net/curl/CURL.hx @@ -203,9 +203,13 @@ class CURL { case CURLOption.WRITEFUNCTION: var callback:CURL->Bytes->Int = cast parameter; - parameter = function (bytes:Bytes) { + parameter = function (bytes:Bytes, length:Int) { - return callback (this, bytes); + var cacheLength = bytes.length; + @:privateAccess bytes.length = length; + var read = callback (this, bytes); + @:privateAccess bytes.length = cacheLength; + return read; }