Changeset 2953

Show
Ignore:
Timestamp:
04/27/06 15:19:30 (3 years ago)
Author:
madcat
Message:

Fixed some too aggressive exceptions during file name removal.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • hydranode/hncore/metadata.cpp

    r2934 r2953  
    962962                return; 
    963963        } 
    964         if (!m_fileNames[m_fileName]) { 
    965                 m_fileNames.erase(m_fileName); 
    966         } 
    967         m_fileName = name; 
    968         m_fileNames[name] = 0; 
     964        m_fileNames[name]++; 
     965 
    969966        getEventTable().postEvent(this, MD_NAME_CHANGED); 
    970         getEventTable().postEvent(this, MD_ADDED_FILENAME); 
     967        if (m_fileNames[name] == 1) { 
     968                getEventTable().postEvent(this, MD_ADDED_FILENAME); 
     969        } 
    971970} 
    972971 
     
    986985 
    987986void MetaData::delFileName(const std::string &name) { 
    988         CHECK_THROW(m_fileNames[name]); 
     987        if (m_fileNames.find(name) == m_fileNames.end()) { 
     988                return; 
     989        } 
    989990        m_fileNames[name]--; 
    990         if (!m_fileNames[name] && name != m_fileName) { 
    991                 m_fileNames.erase(name); 
     991        if (!m_fileNames[name]) { 
     992                if (name == m_fileName) { 
     993                        m_fileNames[name]++; 
     994                } else { 
     995                        m_fileNames.erase(name); 
     996                } 
    992997        } 
    993998}