(heapOrArray, idx, maxBytesToRead)
| 261 | } |
| 262 | var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf8") : undefined; |
| 263 | function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { |
| 264 | var endIdx = idx + maxBytesToRead; |
| 265 | var endPtr = idx; |
| 266 | while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; |
| 267 | if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { |
| 268 | return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)); |
| 269 | } else { |
| 270 | var str = ""; |
| 271 | while (idx < endPtr) { |
| 272 | var u0 = heapOrArray[idx++]; |
| 273 | if (!(u0 & 128)) { |
| 274 | str += String.fromCharCode(u0); |
| 275 | continue; |
| 276 | } |
| 277 | var u1 = heapOrArray[idx++] & 63; |
| 278 | if ((u0 & 224) == 192) { |
| 279 | str += String.fromCharCode((u0 & 31) << 6 | u1); |
| 280 | continue; |
| 281 | } |
| 282 | var u2 = heapOrArray[idx++] & 63; |
| 283 | if ((u0 & 240) == 224) { |
| 284 | u0 = (u0 & 15) << 12 | u1 << 6 | u2; |
| 285 | } else { |
| 286 | if ((u0 & 248) != 240) warnOnce("Invalid UTF-8 leading byte 0x" + u0.toString(16) + " encountered when deserializing a UTF-8 string in wasm memory to a JS string!"); |
| 287 | u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63; |
| 288 | } |
| 289 | if (u0 < 65536) { |
| 290 | str += String.fromCharCode(u0); |
| 291 | } else { |
| 292 | var ch = u0 - 65536; |
| 293 | str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); |
| 294 | } |
| 295 | } |
| 296 | } |
| 297 | return str; |
| 298 | } |
| 299 | function UTF8ToString(ptr, maxBytesToRead) { |
| 300 | return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""; |
| 301 | } |
no test coverage detected