fix bug with entries present in both global and local files (patch 773360)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22927 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2003-08-16 12:07:03 +00:00
parent 609533d54d
commit 80fdb8d64f

View File

@ -623,7 +623,11 @@ void wxFileConfig::Parse(wxTextBuffer& buffer, bool bLocal)
SetPath(strGroup);
if ( bLocal )
{
if ( m_pCurrentGroup->Parent() )
m_pCurrentGroup->Parent()->SetLastGroup(m_pCurrentGroup);
m_pCurrentGroup->SetLine(m_linesTail);
}
// check that there is nothing except comments left on this line
bool bCont = TRUE;
@ -678,19 +682,6 @@ void wxFileConfig::Parse(wxTextBuffer& buffer, bool bLocal)
if ( pEntry == NULL ) {
// new entry
pEntry = m_pCurrentGroup->AddEntry(strKey, n);
// <JACS>
// Take the opportunity to set some pointers now
// that we know there are items in this group.
// Otherwise, items added to a newly read file
// can be put in the wrong place.
m_pCurrentGroup->SetLastEntry(pEntry);
if (m_pCurrentGroup->Parent())
m_pCurrentGroup->Parent()->SetLastGroup(m_pCurrentGroup);
// </JACS>
if ( bLocal )
pEntry->SetLine(m_linesTail);
}
else {
if ( bLocal && pEntry->IsImmutable() ) {
@ -708,11 +699,12 @@ void wxFileConfig::Parse(wxTextBuffer& buffer, bool bLocal)
wxLogWarning(_("file '%s', line %d: key '%s' was first found at line %d."),
buffer.GetName(), n + 1, strKey.c_str(), pEntry->Line());
if ( bLocal )
pEntry->SetLine(m_linesTail);
}
}
if ( bLocal )
pEntry->SetLine(m_linesTail);
// skip whitespace
while ( wxIsspace(*pEnd) )
pEnd++;
@ -1844,8 +1836,6 @@ void wxFileConfigEntry::SetValue(const wxString& strValue, bool bUser)
else // this entry didn't exist in the local file
{
// add a new line to the file
wxASSERT( m_nLine == wxNOT_FOUND ); // consistency check
wxFileConfigLineList *line = Group()->GetLastEntryLine();
m_pLine = Group()->Config()->LineListInsert(strLine, line);