diff --git a/src/mapnik_image.cpp b/src/mapnik_image.cpp index 4aff65ff..5f0313d0 100644 --- a/src/mapnik_image.cpp +++ b/src/mapnik_image.cpp @@ -3220,8 +3220,9 @@ void Image::EIO_AfterFromSVGBytes(uv_work_t* req) { Image* im = new Image(closure->im); v8::Local ext = Nan::New(im); - v8::Local image_obj = Nan::New(constructor)->GetFunction()->NewInstance(1, &ext); - v8::Local argv[2] = { Nan::Null(), image_obj }; + Nan::MaybeLocal maybe_local = Nan::NewInstance(Nan::New(constructor)->GetFunction(), 1, &ext); + if (maybe_local.IsEmpty()) Nan::ThrowError("Could not create new Image instance"); + v8::Local argv[2] = { Nan::Null(), maybe_local.ToLocalChecked() }; Nan::MakeCallback(Nan::GetCurrentContext()->Global(), Nan::New(closure->cb), 2, argv); } closure->cb.Reset(); diff --git a/src/utils.hpp b/src/utils.hpp index 643679e7..00d577f8 100644 --- a/src/utils.hpp +++ b/src/utils.hpp @@ -18,7 +18,7 @@ #include #include -#define TOSTR(obj) (*v8::String::Utf8Value((obj)->ToString())) +#define TOSTR(obj) (*Nan::Utf8String(obj)) #define FUNCTION_ARG(I, VAR) \ if (info.Length() <= (I) || !info[I]->IsFunction()) { \ diff --git a/test/vector-tile.test.js b/test/vector-tile.test.js index eb5ae3e3..8f1f3b41 100644 --- a/test/vector-tile.test.js +++ b/test/vector-tile.test.js @@ -797,59 +797,59 @@ describe('mapnik.VectorTile ', function() { var data = fs.readFileSync("./test/data/vector_tile/tile1.vector.pbf"); vtile.setData(data); assert.throws( - function() { vtile.getDataSync(null); }, + function() { vtile.getDataSync(null); }, null, "first arg must be a options object" ); assert.throws( - function() { vtile.getData(null, function(err, out) {}); }, + function() { vtile.getData(null, function(err, out) {}); }, null, "first arg must be a options object" ); assert.throws( - function() { vtile.getDataSync({compression:null}); }, + function() { vtile.getDataSync({compression:null}); }, null, "option 'compression' must be a string, either 'gzip', or 'none' (default)" ); assert.throws( - function() { vtile.getData({compression:null}, function(err,out) {}); }, + function() { vtile.getData({compression:null}, function(err,out) {}); }, null, "option 'compression' must be a string, either 'gzip', or 'none' (default)" ); assert.throws( - function() { vtile.getDataSync({level:null}); }, + function() { vtile.getDataSync({level:null}); }, null, "option 'level' must be an integer between 0 (no compression) and 9 (best compression) inclusive" ); assert.throws( - function() { vtile.getData({level:null}, function(err,out) {}); }, + function() { vtile.getData({level:null}, function(err,out) {}); }, null, "option 'level' must be an integer between 0 (no compression) and 9 (best compression) inclusive" ); assert.throws( - function() { vtile.getDataSync({level:99}); }, + function() { vtile.getDataSync({level:99}); }, null, "option 'level' must be an integer between 0 (no compression) and 9 (best compression) inclusive" ); assert.throws( - function() { vtile.getData({level:99}, function(err,out) {}); }, + function() { vtile.getData({level:99}, function(err,out) {}); }, null, "option 'level' must be an integer between 0 (no compression) and 9 (best compression) inclusive" ); assert.throws( - function() { vtile.getDataSync({level:-1}); }, + function() { vtile.getDataSync({level:-1}); }, null, "option 'level' must be an integer between 0 (no compression) and 9 (best compression) inclusive" ); assert.throws( - function() { vtile.getData({level:-1}, function(err,out) {}); }, + function() { vtile.getData({level:-1}, function(err,out) {}); }, null, "option 'level' must be an integer between 0 (no compression) and 9 (best compression) inclusive" ); assert.throws( - function() { vtile.getDataSync({strategy:null}); }, + function() { vtile.getDataSync({strategy:null}); }, null, "option 'strategy' must be one of the following strings: FILTERED, HUFFMAN_ONLY, RLE, FIXED, DEFAULT" ); assert.throws( - function() { vtile.getData({strategy:null}, function(err,out) {}); }, + function() { vtile.getData({strategy:null}, function(err,out) {}); }, null, "option 'strategy' must be one of the following strings: FILTERED, HUFFMAN_ONLY, RLE, FIXED, DEFAULT" ); assert.throws( - function() { vtile.getDataSync({strategy:'FOO'}); }, + function() { vtile.getDataSync({strategy:'FOO'}); }, null, "option 'strategy' must be one of the following strings: FILTERED, HUFFMAN_ONLY, RLE, FIXED, DEFAULT" ); assert.throws( - function() { vtile.getData({strategy:'FOO'}, function(err,out) {}); }, + function() { vtile.getData({strategy:'FOO'}, function(err,out) {}); }, null, "option 'strategy' must be one of the following strings: FILTERED, HUFFMAN_ONLY, RLE, FIXED, DEFAULT" ); });