Avoid callstack loop by making sure only one geocoder data iterator buffer-flush operation is happening at once
This commit is contained in:
@@ -625,7 +625,11 @@ MBTiles.prototype.geocoderDataIterator = function(type) {
|
|||||||
var doneSentinel = {};
|
var doneSentinel = {};
|
||||||
var _this = this;
|
var _this = this;
|
||||||
|
|
||||||
|
var sending = false;
|
||||||
var sendIfAvailable = function() {
|
var sendIfAvailable = function() {
|
||||||
|
if (sending) return;
|
||||||
|
sending = true;
|
||||||
|
|
||||||
while (nextQueue.length && dataQueue.length) {
|
while (nextQueue.length && dataQueue.length) {
|
||||||
var nextCb = nextQueue.shift(), data;
|
var nextCb = nextQueue.shift(), data;
|
||||||
if (dataQueue[0] == doneSentinel) {
|
if (dataQueue[0] == doneSentinel) {
|
||||||
@@ -637,6 +641,8 @@ MBTiles.prototype.geocoderDataIterator = function(type) {
|
|||||||
nextCb({value: {shard: data.shard, data: zlib.inflateSync(data.data)}, done: false});
|
nextCb({value: {shard: data.shard, data: zlib.inflateSync(data.data)}, done: false});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sending = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var refilling = false;
|
var refilling = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user