diff --git a/extensions/weavedrive/client/main.lua b/extensions/weavedrive/client/main.lua index ca9dabdb..661e1b83 100644 --- a/extensions/weavedrive/client/main.lua +++ b/extensions/weavedrive/client/main.lua @@ -10,7 +10,9 @@ function drive.getBlock(height) if not block then return nil, "Block Header not found!" end - local headers = require("json").decode(block:read(block:seek("end"))) + local size = block:seek("end") + block:seek("set") + local headers = require("json").decode(block:read(size)) block:close() return headers end @@ -20,7 +22,9 @@ function drive.getTx(txId) if not file then return nil, "File not found!" end - local contents = require("json").decode(file:read(file:seek("end"))) + local size = file:seek("end") + file:seek("set") + local contents = require("json").decode(file:read(size)) file:close() return contents end @@ -30,7 +34,9 @@ function drive.getData(txId) if not file then return nil, "File not found!" end - local contents = file:read(file:seek("end")) + local size = file:seek("end") + file:seek("set") + local contents = file:read(size) file:close() return contents end diff --git a/extensions/weavedrive/src/index.js b/extensions/weavedrive/src/index.js index fbb12c38..4efa3fce 100644 --- a/extensions/weavedrive/src/index.js +++ b/extensions/weavedrive/src/index.js @@ -202,6 +202,13 @@ module.exports = function weaveDrive (mod, FS) { mod.HEAP8.set(stream.node.contents.subarray(0, toRead), dstPtr) return toRead } + + // console.log(`stream.node.total_size: ${stream.node.total_size}, stream.position: ${stream.position}, to_read: ${to_read}`) + if (stream.position >= stream.node.total_size) { + // console.log("WeaveDrive: EOF reached.") + return 0; + } + // Satisfy what we can with the cache first let bytesRead = this.readFromCache(stream, dstPtr, toRead) stream.position += bytesRead