Fix lost filename in err msg

In some circumstances, FileExceptions are constructed empty, then have a
filename assigned to them, but the error message in these scenarios is
left as the default "unknown" one, which is sometimes shown to users.
This change fixes that case to be consistent with instances that are
constructed with the filename.
This commit is contained in:
Heewa Barfchin
2021-05-12 21:55:04 -04:00
parent bb434d3ff2
commit ce678a2d4d
2 changed files with 13 additions and 7 deletions

View File

@@ -248,17 +248,13 @@ const char* XMLAttributeError::what() const throw()
FileException::FileException(const char * sMessage, const char * sFileName)
: Exception( sMessage ),file(sFileName)
{
if (sFileName) {
_sErrMsgAndFileName = _sErrMsg + ": ";
_sErrMsgAndFileName += sFileName;
}
setFileName(sFileName);
}
FileException::FileException(const char * sMessage, const FileInfo& File)
: Exception( sMessage ),file(File)
{
_sErrMsgAndFileName = _sErrMsg + ": ";
_sErrMsgAndFileName += File.fileName();
setFileName(File.fileName().c_str());
}
FileException::FileException()
@@ -274,6 +270,15 @@ FileException::FileException(const FileException &inst)
{
}
void FileException::setFileName(const char * sFileName) {
file.setFile(sFileName);
_sErrMsgAndFileName = _sErrMsg;
if (sFileName) {
_sErrMsgAndFileName += ": ";
_sErrMsgAndFileName += sFileName;
}
}
std::string FileException::getFileName() const
{
return file.fileName();
@@ -324,7 +329,7 @@ void FileException::setPyObject( PyObject * pydict)
Py::Dict edict(pydict);
if (edict.hasKey("filename"))
file.setFile(static_cast<std::string>(Py::String(edict.getItem("filename"))));
setFileName(Py::String(edict.getItem("filename")).as_std_string("utf-8").c_str());
}
}