Skip to content

Commit

Permalink
src: guard against calling Init() multiple times
Browse files Browse the repository at this point in the history
This function should only be called once. Calling it multiple times
would currently break Node.js (e.g. re-registering builtin modules
would break the linked list for them).

PR-URL: #26458
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
addaleax authored and BridgeAR committed Mar 14, 2019
1 parent dcfdef5 commit 1d4fd21
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/node.cc
Original file line number Diff line number Diff line change
Expand Up @@ -608,9 +608,14 @@ int ProcessGlobalArgs(std::vector<std::string>* args,
return 0;
}

static std::atomic_bool init_called{false};

int Init(std::vector<std::string>* argv,
std::vector<std::string>* exec_argv,
std::vector<std::string>* errors) {
// Make sure Init() is called only once.
CHECK(!init_called.exchange(true));

// Register built-in modules
binding::RegisterBuiltinModules();

Expand Down

0 comments on commit 1d4fd21

Please sign in to comment.