Merge pull request #46 from mapbox/null-tile
Detect null or non-buffer tile
This commit is contained in:
@@ -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
BIN
test/fixtures/corrupt_null_tile.mbtiles
vendored
Normal file
Binary file not shown.
@@ -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));
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user