aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/utils/cxx
diff options
context:
space:
mode:
authorEgor Tensin <Egor.Tensin@gmail.com>2015-06-11 19:48:49 +0300
committerEgor Tensin <Egor.Tensin@gmail.com>2015-06-11 19:48:49 +0300
commite484372bf3f618eb30b8e6970fd13efa20c48509 (patch)
tree54a5f9cc4cc3eb8d787bf123a84630bda19db12f /utils/cxx
parentadd utils/cxx (diff)
downloadaes-tools-e484372bf3f618eb30b8e6970fd13efa20c48509.tar.gz
aes-tools-e484372bf3f618eb30b8e6970fd13efa20c48509.zip
add error message formatting functions
Diffstat (limited to 'utils/cxx')
-rw-r--r--utils/cxx/include/aesnixx/error.hpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/utils/cxx/include/aesnixx/error.hpp b/utils/cxx/include/aesnixx/error.hpp
index af61a32..db390ea 100644
--- a/utils/cxx/include/aesnixx/error.hpp
+++ b/utils/cxx/include/aesnixx/error.hpp
@@ -10,7 +10,11 @@
#include <aesni/all.h>
+#include <cstdlib>
+
#include <stdexcept>
+#include <string>
+#include <vector>
namespace aesni
{
@@ -24,8 +28,13 @@ namespace aesni
~ErrorDetailsThrowsInDestructor()
{
- if (m_impl.ec != AESNI_ERROR_SUCCESS)
- throw std::runtime_error(aesni_strerror(m_impl.ec));
+ if (aesni_get_error_code(get()) != AESNI_ERROR_SUCCESS)
+ {
+ std::vector<char> msg;
+ msg.resize(aesni_format_error(get(), NULL, 0));
+ aesni_format_error(get(), msg.data(), msg.size());
+ throw std::runtime_error(std::string(msg.begin(), msg.end()));
+ }
}
AesNI_ErrorDetails* get() { return &m_impl; }