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:
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user