diff options
author | Ingo Klöcker <[email protected]> | 2024-07-04 12:36:04 +0000 |
---|---|---|
committer | Ingo Klöcker <[email protected]> | 2024-07-05 08:05:51 +0000 |
commit | 2656d3ee5b1a905d9fe4dd5c8b2d9737e775df31 (patch) | |
tree | 9f200f6192910356fbfb77bdea25d324df9c93a5 | |
parent | qt: Always include C++ binding headers with gpgme++/ prefix (diff) | |
download | gpgme-2656d3ee5b1a905d9fe4dd5c8b2d9737e775df31.tar.gz gpgme-2656d3ee5b1a905d9fe4dd5c8b2d9737e775df31.zip |
cpp: Add safer member function returning text describing an error
* lang/cpp/src/error.h, lang/cpp/src/context.cpp (class Error): New
member function asStdString.
--
Unlike asString the new function doesn't cache the value returned by
gpgme_strerror_r. This ensures that on Windows the UTF-8 encoded text
is returned for the main thread even if the function was called before
for another thread. For other threads asStdString will still return the
natively encoded error description until UTF-8 encoded error
descriptions can be enabled for all threads (T7185).
GnuPG-bug-id: 7188
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | lang/cpp/src/context.cpp | 7 | ||||
-rw-r--r-- | lang/cpp/src/error.h | 1 |
3 files changed, 12 insertions, 0 deletions
@@ -14,6 +14,9 @@ Noteworthy changes in version 1.24.0 (unrelease) * cpp: Provide information about designated revocation keys for a Key. [T7118] + * cpp: Add safer member function returning text describing an error. + [T5960] + * qt: Install headers for Qt 5 and Qt 6 in separate folders. [T7161] * qt: Allow reading the data to decrypt/encrypt/sign/verify directly from @@ -39,6 +42,7 @@ Noteworthy changes in version 1.24.0 (unrelease) cpp: Key::revocationKey NEW. cpp: Key::numRevocationKeys NEW. cpp: Key::revocationKeys NEW. + cpp: Error::asStdString NEW. qt: DecryptVerifyJob::setInputFile NEW. qt: DecryptVerifyJob::inputFile NEW. qt: DecryptVerifyJob::setOutputFile NEW. diff --git a/lang/cpp/src/context.cpp b/lang/cpp/src/context.cpp index 99e354df..4882c80c 100644 --- a/lang/cpp/src/context.cpp +++ b/lang/cpp/src/context.cpp @@ -130,6 +130,13 @@ const char *Error::asString() const return mMessage.c_str(); } +std::string Error::asStdString() const +{ + std::string message; + format_error(static_cast<gpgme_error_t>(mErr), message); + return message; +} + int Error::code() const { return gpgme_err_code(mErr); diff --git a/lang/cpp/src/error.h b/lang/cpp/src/error.h index d1367046..bc970e36 100644 --- a/lang/cpp/src/error.h +++ b/lang/cpp/src/error.h @@ -48,6 +48,7 @@ public: const char *source() const; const char *asString() const; + std::string asStdString() const; int code() const; int sourceID() const; |