safe handling of malformed databases
This commit is contained in:
@@ -365,18 +365,24 @@ MBTiles.prototype.getInfo = function(callback) {
|
||||
},
|
||||
// Determine min/max zoom if needed
|
||||
function(err) {
|
||||
if (err) return callback(err);
|
||||
if (err && err.errno !== 1) return callback(err);
|
||||
if (info.maxzoom !== undefined
|
||||
&& info.minzoom !== undefined) return this();
|
||||
|
||||
var group = this.group();
|
||||
|
||||
var step = this;
|
||||
var zoomquery = that.db.prepare('SELECT zoom_level FROM tiles ' +
|
||||
'WHERE zoom_level = ? LIMIT 1');
|
||||
for (var i = 0; i < 30; i++) {
|
||||
zoomquery.get(i, group());
|
||||
}
|
||||
zoomquery.finalize();
|
||||
'WHERE zoom_level = ? LIMIT 1', function(err) {
|
||||
if (err) {
|
||||
if (err.errno === 1) step();
|
||||
else throw new Error(err);
|
||||
} else {
|
||||
var group = step.group();
|
||||
for (var i = 0; i < 30; i++) {
|
||||
zoomquery.get(i, group());
|
||||
}
|
||||
zoomquery.finalize();
|
||||
}
|
||||
});
|
||||
},
|
||||
function(err, rows) {
|
||||
if (err) return callback(err);
|
||||
@@ -434,7 +440,7 @@ MBTiles.prototype.getInfo = function(callback) {
|
||||
var range = parseInt(info.maxzoom, 10) - parseInt(info.minzoom, 10);
|
||||
info.minzoom = parseInt(info.minzoom, 10);
|
||||
info.maxzoom = parseInt(info.maxzoom, 10);
|
||||
info.bounds = _(info.bounds.split(',')).map(parseFloat);
|
||||
info.bounds = _((info.bounds || '').split(',')).map(parseFloat);
|
||||
info.center = [
|
||||
(info.bounds[2] - info.bounds[0]) / 2 + info.bounds[0],
|
||||
(info.bounds[3] - info.bounds[1]) / 2 + info.bounds[1],
|
||||
|
||||
Reference in New Issue
Block a user