Index: src/libictranslate/ResourceManager.cpp =================================================================== diff -u -N -rf6fe924675e9de6120b6c1eac2430fa5b2946251 -re9d0e63fbb826dd00b7c590d2dcda5e5f41b4b14 --- src/libictranslate/ResourceManager.cpp (.../ResourceManager.cpp) (revision f6fe924675e9de6120b6c1eac2430fa5b2946251) +++ src/libictranslate/ResourceManager.cpp (.../ResourceManager.cpp) (revision e9d0e63fbb826dd00b7c590d2dcda5e5f41b4b14) @@ -19,6 +19,7 @@ *************************************************************************/ #include "stdafx.h" #include "ResourceManager.h" +#include "../libicpf/exception.h" #include "../libicpf/cfg.h" #include "../libicpf/crc32.h" #include @@ -97,6 +98,11 @@ m_uiChecksum = 0; } +const tchar_t* CTranslationItem::GetText() const +{ + return m_pszText ? m_pszText : _t(""); +} + void CTranslationItem::SetText(const tchar_t* pszText, bool bUnescapeString) { delete [] m_pszText; @@ -524,6 +530,10 @@ void CLangData::WriteTranslation(PCTSTR pszPath) { + if(!IsValidDescription()) + THROW(_t("Invalid translation information (author, name or point size)"), 0, 0, 0); + + // real writing const int iBufferSize = 256; tchar_t szTemp[iBufferSize]; @@ -693,6 +703,17 @@ m_bModified = true; } +bool CLangData::IsValidDescription() const +{ + // basic sanity checks + if(!m_pszAuthor || m_pszAuthor[0] == _t('\0') || + !m_pszLngName || m_pszLngName[0] == _t('\0') || + !m_pszFontFace || m_pszFontFace[0] == _t('\0') || + m_wPointSize == 0) + return false; + return true; +} + void CLangData::SetFnameData(PTSTR *ppszDst, PCTSTR pszSrc) { if (*ppszDst)