diff --git a/src/gsi/gsi.cc b/src/gsi/gsi.cc index c584e8721..0f94a19d5 100644 --- a/src/gsi/gsi.cc +++ b/src/gsi/gsi.cc @@ -35,6 +35,13 @@ namespace gsi void GSI_PUBLIC initialize () { + // Allow duplicate initialization without any effect + static bool s_is_initialized = false; + if (s_is_initialized) { + return; + } + s_is_initialized = true; + tl::SelfTimer timer (tl::verbosity () >= 21, "Initializing script environment"); for (gsi::ClassBase::class_iterator c = gsi::ClassBase::begin_classes (); c != gsi::ClassBase::end_classes (); ++c) { diff --git a/src/gsi/gsiExpression.cc b/src/gsi/gsiExpression.cc index 8250f2371..2aa201b90 100644 --- a/src/gsi/gsiExpression.cc +++ b/src/gsi/gsiExpression.cc @@ -1073,6 +1073,15 @@ private: void GSI_PUBLIC initialize_expressions () { + // Allow duplicate initialization without any effect + static bool s_is_initialized = false; + if (s_is_initialized) { + return; + } + s_is_initialized = true; + + gsi::initialize (); + for (gsi::ClassBase::class_iterator c = gsi::ClassBase::begin_classes (); c != gsi::ClassBase::end_classes (); ++c) { // install the method table: