mirror of
https://github.com/1dot13/source.git
synced 2026-09-02 14:36:06 +02:00
give the XML tag map and the writer buffer a name
Both of these bound a non-const reference to a temporary, which MSVC accepts
and clang does not, and which leaves the reference dangling once the full
expression ends.
PropertyContainer::initFromXMLFile and writeToXMLFile take their tag map by
non-const reference because the accessors on it insert default tag names as
they are asked for, so it cannot be const and it cannot be a temporary. All
eight call sites passed a freshly built one; they now declare it. Each keeps
its own object, so a map filled in by one call cannot leak into the next, the
same as when each call built its own temporary.
XMLWriter::writeToFile bound std::string& to what stringstream::str() returns
by value. Declared as a value it is initialised straight from the return with
no copy, and const because only c_str() and length() are asked of it.
Verification:
grep -rn 'PropertyContainer::TagMap()' . # nothing
ninja -C build parse # no i18n or XMLWriter sites remain
ninja -C build -k 0 # Release, four applications, green
ninja -C build-debug -k 0 # Debug, four applications, green
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
committed by
majcosta
co-authored by
Claude Opus 4.8
parent
b5ea70aa44
commit
e56a372871
@@ -86,13 +86,15 @@ void Loc::Init(Topic t, vfs::String const& section)
|
||||
_PropState& state = _topicFiles[t][L"_ALL"];
|
||||
if(!state.filename.empty() && !state.loaded)
|
||||
{
|
||||
_localizedStrings[t].initFromXMLFile(state.filename, vfs::PropertyContainer::TagMap());
|
||||
vfs::PropertyContainer::TagMap tags;
|
||||
_localizedStrings[t].initFromXMLFile(state.filename, tags);
|
||||
state.loaded = true;
|
||||
}
|
||||
state = _topicFiles[t][section];
|
||||
if(!state.filename.empty() && !state.loaded)
|
||||
{
|
||||
_localizedStrings[t].initFromXMLFile(state.filename, vfs::PropertyContainer::TagMap());
|
||||
vfs::PropertyContainer::TagMap tags;
|
||||
_localizedStrings[t].initFromXMLFile(state.filename, tags);
|
||||
state.loaded = true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user