bool CXBMCTinyXML::LoadFile(const CStdString &_filename, TiXmlEncoding encoding) { // There was a really terrifying little bug here. The code: // value = filename // in the STL case, cause the assignment method of the std::string to // be called. What is strange, is that the std::string had the same // address as it's c_str() method, and so bad things happen. Looks // like a bug in the Microsoft STL implementation. // Add an extra string to avoid the crash. CStdString filename(_filename); value = filename; XFILE::CFileStream file; if (!file.Open(value)) { SetError(TIXML_ERROR_OPENING_FILE, NULL, NULL, TIXML_ENCODING_UNKNOWN); return false; } // Delete the existing data: Clear(); location.Clear(); CStdString data; data.reserve(8 * 1000); StreamIn(&file, &data); file.Close(); Parse(data, NULL, encoding); if (Error()) return false; return true; }
bool CWinShader::LoadEffect(CStdString filename, DefinesMap* defines) { CLog::Log(LOGDEBUG, __FUNCTION__" - loading shader %s", filename.c_str()); XFILE::CFileStream file; if(!file.Open(filename)) { CLog::Log(LOGERROR, __FUNCTION__" - failed to open file %s", filename.c_str()); return false; } CStdString pStrEffect; getline(file, pStrEffect, '\0'); if (!m_effect.Create(pStrEffect, defines)) { CLog::Log(LOGERROR, __FUNCTION__" %s failed", pStrEffect.c_str()); return false; } return true; }