safe handling of malformed databases

This commit is contained in:
Konstantin Käfer
2011-06-27 19:56:38 +02:00
parent 9f08ae3e26
commit d87ca40681

View File

@@ -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],