diff --git a/src/node.cc b/src/node.cc index 527d11ca8e6..0ae59e81bef 100644 --- a/src/node.cc +++ b/src/node.cc @@ -1574,6 +1574,7 @@ typedef void (*extInit)(Handle exports); // DLOpen is node.dlopen(). Used to load 'module.node' dynamically shared // objects. Handle DLOpen(const v8::Arguments& args) { + node_module_struct compat_mod; HandleScope scope; if (args.Length() < 2) return Undefined(); @@ -1616,10 +1617,13 @@ Handle DLOpen(const v8::Arguments& args) { // Get the init() function from the dynamically shared object. node_module_struct *mod = static_cast(dlsym(handle, symstr)); free(symstr); + symstr = NULL; + // Error out if not found. if (mod == NULL) { /* Start Compatibility hack: Remove once everyone is using NODE_MODULE macro */ - node_module_struct compat_mod; + memset(&compat_mod, 0, sizeof compat_mod); + mod = &compat_mod; mod->version = NODE_MODULE_VERSION;