diff --git a/src/Base/Exception.cpp b/src/Base/Exception.cpp index 1efd8c0110..8f8cfc74cf 100644 --- a/src/Base/Exception.cpp +++ b/src/Base/Exception.cpp @@ -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(Py::String(edict.getItem("filename")))); + setFileName(Py::String(edict.getItem("filename")).as_std_string("utf-8").c_str()); } } diff --git a/src/Base/Exception.h b/src/Base/Exception.h index 7fd38ce75a..0aff3c9e1f 100644 --- a/src/Base/Exception.h +++ b/src/Base/Exception.h @@ -262,6 +262,7 @@ protected: // necessary for what() legacy behaviour as it returns a buffer that // can not be of a temporary object to be destroyed at end of what() std::string _sErrMsgAndFileName; + void setFileName(const char * sFileName=0); }; /**