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

View File

@@ -154,6 +154,10 @@ MBTiles.prototype.getTile = function(z, x, y, callback) {
return callback(new Error('Tile does not exist'));
} else if (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 {
var headers = tiletype.headers(row.tile_data);
headers['Last-Modified'] = new Date(mbtiles._stat.mtime).toUTCString();

BIN
test/fixtures/corrupt_null_tile.mbtiles vendored Normal file

Binary file not shown.

View File

@@ -10,7 +10,8 @@ var fixtures = {
plain_3: __dirname + '/fixtures/plain_3.mbtiles',
plain_4: __dirname + '/fixtures/plain_4.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) {
@@ -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));
});