Skip to content

Commit 042ca37

Browse files
committed
Rely on open event for .length property during reads
1 parent b37bb71 commit 042ca37

File tree

1 file changed

+19
-21
lines changed

1 file changed

+19
-21
lines changed

index.js

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -68,27 +68,25 @@ Store.prototype._read = function (offset, length, cb) {
6868
cb = once(cb)
6969
var buffers = []
7070
self._store('readonly', function (err, store) {
71-
backify(store.get(self.name + DELIM + "length"), function(err, ev) {
72-
if ((ev.target.result || 0) < offset+length) {
73-
return cb(new Error('Could not satisfy length'))
74-
}
75-
if (err) return cb(err)
76-
var offsets = self._blocks(offset, offset+length)
77-
var pending = offsets.length + 1
78-
var firstBlock = offsets.length > 0 ? offsets[0].block : 0
79-
var j = 0
80-
for (var i = 0; i < offsets.length; i++) (function (o) {
81-
var key = self.name + DELIM + o.block
82-
backify(store.get(key), function (err, ev) {
83-
if (err) return cb(err)
84-
buffers[o.block-firstBlock] = ev.target.result
85-
? bufferFrom(ev.target.result.subarray(o.start,o.end))
86-
: bufferAlloc(o.end-o.start)
87-
if (--pending === 0) cb(null, Buffer.concat(buffers))
88-
})
89-
})(offsets[i])
90-
if (--pending === 0) cb(null, Buffer.concat(buffers))
91-
})
71+
if ((self.length || 0) < offset+length) {
72+
return cb(new Error('Could not satisfy length'))
73+
}
74+
if (err) return cb(err)
75+
var offsets = self._blocks(offset, offset+length)
76+
var pending = offsets.length + 1
77+
var firstBlock = offsets.length > 0 ? offsets[0].block : 0
78+
var j = 0
79+
for (var i = 0; i < offsets.length; i++) (function (o) {
80+
var key = self.name + DELIM + o.block
81+
backify(store.get(key), function (err, ev) {
82+
if (err) return cb(err)
83+
buffers[o.block-firstBlock] = ev.target.result
84+
? bufferFrom(ev.target.result.subarray(o.start,o.end))
85+
: bufferAlloc(o.end-o.start)
86+
if (--pending === 0) cb(null, Buffer.concat(buffers))
87+
})
88+
})(offsets[i])
89+
if (--pending === 0) cb(null, Buffer.concat(buffers))
9290
})
9391
}
9492

0 commit comments

Comments
 (0)