Merge pull request #46 from mapbox/null-tile

Detect null or non-buffer tile
This commit is contained in:
Will White
2014-11-18 12:59:14 -05:00
3 changed files with 9 additions and 1 deletions
+4
View File
@@ -154,6 +154,10 @@ MBTiles.prototype.getTile = function(z, x, y, callback) {
return callback(new Error('Tile does not exist')); return callback(new Error('Tile does not exist'));
} else if (err) { } else if (err) {
return callback(err); return callback(err);
} else if (!row.tile_data || !Buffer.isBuffer(row.tile_data)) {
var err = new Error('Tile is invalid');
err.code = 'EINVALIDTILE';
return callback(err);
} else { } else {
var headers = tiletype.headers(row.tile_data); var headers = tiletype.headers(row.tile_data);
headers['Last-Modified'] = new Date(mbtiles._stat.mtime).toUTCString(); headers['Last-Modified'] = new Date(mbtiles._stat.mtime).toUTCString();
Binary file not shown.
+5 -1
View File
@@ -10,7 +10,8 @@ var fixtures = {
plain_3: __dirname + '/fixtures/plain_3.mbtiles', plain_3: __dirname + '/fixtures/plain_3.mbtiles',
plain_4: __dirname + '/fixtures/plain_4.mbtiles', plain_4: __dirname + '/fixtures/plain_4.mbtiles',
non_existent: __dirname + '/fixtures/non_existent.mbtiles', non_existent: __dirname + '/fixtures/non_existent.mbtiles',
corrupt: __dirname + '/fixtures/corrupt.mbtiles' corrupt: __dirname + '/fixtures/corrupt.mbtiles',
corrupt_null_tile: __dirname + '/fixtures/corrupt_null_tile.mbtiles'
}; };
function yieldsError(assert, error, msg, callback) { function yieldsError(assert, error, msg, callback) {
@@ -140,3 +141,6 @@ fs.readdirSync(__dirname + '/fixtures/grids/').forEach(function(file) {
}); });
}); });
tape('corrupt null tile', function(assert) {
loaded.corrupt_null_tile.getTile(1, 0, 1, yieldsError(assert, 'error', 'Tile is invalid', assert.end));
});