Do not let the module struct to be deallocated by `uv_dlclose`
before reading data from it.
PR-URL: https://github.com/nodejs/node/pull/2792
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Brian White <mscdex@mscdex.net>
Reviewed-By: Yosuke Furukawa <yosuke.furukawa@gmail.com>
return;
}
if (mp->nm_version != NODE_MODULE_VERSION) {
- uv_dlclose(&lib);
char errmsg[1024];
snprintf(errmsg,
sizeof(errmsg),
"Module version mismatch. Expected %d, got %d.",
NODE_MODULE_VERSION, mp->nm_version);
+
+ // NOTE: `mp` is allocated inside of the shared library's memory, calling
+ // `uv_dlclose` will deallocate it
+ uv_dlclose(&lib);
env->ThrowError(errmsg);
return;
}