diff --git a/panda/src/downloader/httpChannel_emscripten.cxx b/panda/src/downloader/httpChannel_emscripten.cxx index 859166fbb7..3054d065f7 100644 --- a/panda/src/downloader/httpChannel_emscripten.cxx +++ b/panda/src/downloader/httpChannel_emscripten.cxx @@ -373,9 +373,11 @@ run_headers_received() { var xhr = window._httpChannels[$0]; var loaded = 0; xhr.onprogress = function (ev) { - var chunk = this.responseText.slice(loaded, ev.loaded); - var ptr = __extend_string($1, chunk.length); - writeAsciiToMemory(chunk, ptr, true); + var body = this.responseText; + var ptr = __extend_string($1, ev.loaded - loaded); + for (var i = loaded; i < ev.loaded; ++i) { + HEAPU8[ptr + i] = body.charCodeAt(i); + } loaded = ev.loaded; }; }, this, dest); @@ -388,8 +390,11 @@ run_headers_received() { var loaded = 0; xhr.onprogress = function (ev) { while (loaded < ev.loaded) { + var body = this.responseText; var size = Math.min(ev.loaded - read, 4096); - writeAsciiToMemory(this.responseText.substr(read, size), $2, true); + for (var i = read; i < read + size; ++i) { + HEAPU8[$2 + i] = body.charCodeAt(i); + } __write_stream($1, $2, size); loaded += size; } @@ -700,7 +705,9 @@ download_to_ram(Ramfile *ramfile, bool subdocument_resumes) { var state = xhr.readyState; var body = xhr.responseText; var ptr = __extend_string($1, body.length); - writeAsciiToMemory(body, ptr, true); + for (var i = 0; i < body.length; ++i) { + HEAPU8[ptr + i] = body.charCodeAt(i); + } return state; }, this, &ramfile->_data);