Browse Source

downloader: Fix HTTP downloads on latest emscripten

rdb 9 months ago
parent
commit
ab57b3c72f
1 changed files with 12 additions and 5 deletions
  1. 12 5
      panda/src/downloader/httpChannel_emscripten.cxx

+ 12 - 5
panda/src/downloader/httpChannel_emscripten.cxx

@@ -373,9 +373,11 @@ run_headers_received() {
       var xhr = window._httpChannels[$0];
       var xhr = window._httpChannels[$0];
       var loaded = 0;
       var loaded = 0;
       xhr.onprogress = function (ev) {
       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;
         loaded = ev.loaded;
       };
       };
     }, this, dest);
     }, this, dest);
@@ -388,8 +390,11 @@ run_headers_received() {
       var loaded = 0;
       var loaded = 0;
       xhr.onprogress = function (ev) {
       xhr.onprogress = function (ev) {
         while (loaded < ev.loaded) {
         while (loaded < ev.loaded) {
+          var body = this.responseText;
           var size = Math.min(ev.loaded - read, 4096);
           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);
           __write_stream($1, $2, size);
           loaded += size;
           loaded += size;
         }
         }
@@ -700,7 +705,9 @@ download_to_ram(Ramfile *ramfile, bool subdocument_resumes) {
     var state = xhr.readyState;
     var state = xhr.readyState;
     var body = xhr.responseText;
     var body = xhr.responseText;
     var ptr = __extend_string($1, body.length);
     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;
     return state;
   }, this, &ramfile->_data);
   }, this, &ramfile->_data);