X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=nucleus%2Flibrary%2Fconfiguration%2Fapplication_configuration.cpp;h=c8cc179fb67048e38f0fb749f4e9df1ff45d91eb;hb=0f0df8de389914b66cf70759575eef0b8261c797;hp=51df2a82bf1803ad6fb78c4456555938f5244443;hpb=2d2b1d669337dd8843f785c2f3d9c6048f730252;p=feisty_meow.git diff --git a/nucleus/library/configuration/application_configuration.cpp b/nucleus/library/configuration/application_configuration.cpp index 51df2a82..c8cc179f 100644 --- a/nucleus/library/configuration/application_configuration.cpp +++ b/nucleus/library/configuration/application_configuration.cpp @@ -298,6 +298,10 @@ const astring &application_configuration::DEFAULT_VIRTUAL_UNIX_ROOT() ////////////// +// static storage for virtual unix root, if used. +SAFE_STATIC(astring, static_root_holder, ) + +// we don't expect it to change during runtime, right? that would be fubar. astring application_configuration::get_virtual_unix_root() { #ifdef __UNIX__ @@ -305,6 +309,11 @@ astring application_configuration::get_virtual_unix_root() return "/"; #endif #ifdef __WIN32__ + // see if we already cached the root. it shouldn't change during runtime. + if (static_root_holder().length()) { + return static_root_holder(); + } + /* read the path out of the config file, which should have been set during the build process if this is really windows. @@ -312,7 +321,11 @@ astring application_configuration::get_virtual_unix_root() astring virtual_root = read_item(WINDOZE_VIRTUAL_ROOT_NAME()); if (!virtual_root) { // if it has no length, we didn't get our setting! we'll limp along with a guess. - return DEFAULT_VIRTUAL_UNIX_ROOT; + // also don't cache the failure value. maybe it will wake up later! + return DEFAULT_VIRTUAL_UNIX_ROOT(); + } else { + static_root_holder() = virtual_root; + return static_root_holder(); } #endif