diff --git a/lib/mbtiles.js b/lib/mbtiles.js index d70a700..66f99a1 100644 --- a/lib/mbtiles.js +++ b/lib/mbtiles.js @@ -218,17 +218,21 @@ MBTiles.prototype.getGrid = function(z, x, y, callback) { : row.grid, function(err,buffer) { if (err) return callback(new Error('Grid is invalid:' + err.message)); - var data = rows.reduce(function(memo, r) { - memo[r.key_name] = JSON.parse(r.key_json); - return memo; - }, {}); - var result = _(JSON.parse(buffer.toString())).extend({ data: data }); + try { + var data = rows.reduce(function(memo, r) { + memo[r.key_name] = JSON.parse(r.key_json); + return memo; + }, {}); + var result = JSON.parse(buffer.toString()); + } catch(err) { + return callback(new Error('Grid is invalid:' + err.message)); + } var options = { 'Content-Type': 'text/javascript', 'Last-Modified': new Date(that._stat.mtime).toUTCString(), 'ETag': that._stat.size + '-' + Number(that._stat.mtime) }; - callback(null, result, options); + callback(null, _(result).extend({data:data}), options); }); } );