diff options
| author | Frederick Martian <fredmartian@gmail.com> | 2025-11-15 17:51:31 +0100 |
|---|---|---|
| committer | Andrey Kleshchev <117672381+akleshchev@users.noreply.github.com> | 2025-11-16 00:24:19 +0200 |
| commit | 1c89ef9a63b30b5fa2d3f080ad3eb4a263e2ccd7 (patch) | |
| tree | 4317e420c29a36a8c2629ba15c1583653c4f003c | |
| parent | d6d453be81742ac2400ede86ae5351c58cc8999c (diff) | |
Fix error when adding a widget filename to the mFileNames stack
base_filename is already an absolute path that was resolved in ffindSkinnedFilenames() above but the oushFileName() method tries to do the same again, resulting in an invalid path (the skin directory path is prepended twice)
| -rw-r--r-- | indra/llui/lluictrlfactory.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp index a2a6d661ff..9abccfd9a0 100644 --- a/indra/llui/lluictrlfactory.cpp +++ b/indra/llui/lluictrlfactory.cpp @@ -100,16 +100,19 @@ void LLUICtrlFactory::loadWidgetTemplate(const std::string& widget_tag, LLInitPa std::string base_filename = search_paths.front(); if (!base_filename.empty()) { - LLUICtrlFactory::instance().pushFileName(base_filename); + LLUICtrlFactory *factory = LLUICtrlFactory::getInstance(); + factory->mFileNames.push_back(base_filename); - if (!LLXMLNode::getLayeredXMLNode(root_node, search_paths)) + if (LLXMLNode::getLayeredXMLNode(root_node, search_paths)) + { + LLXUIParser parser; + parser.readXUI(root_node, block, base_filename); + } + else { LL_WARNS() << "Couldn't parse widget from: " << base_filename << LL_ENDL; - return; } - LLXUIParser parser; - parser.readXUI(root_node, block, base_filename); - LLUICtrlFactory::instance().popFileName(); + factory->mFileNames.pop_back(); } } |
