From 0b1162aa34a805fb46a7f514894ad26a39d58349 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Mon, 3 Dec 2018 06:55:57 -0500 Subject: [PATCH] Update documentation --- cryptlib.h | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/cryptlib.h b/cryptlib.h index 2f36c14a..2bcf34ee 100644 --- a/cryptlib.h +++ b/cryptlib.h @@ -472,25 +472,31 @@ public: #if CRYPTOPP_DOXYGEN_PROCESSING /// \brief Default channel for BufferedTransformation /// \details DEFAULT_CHANNEL is equal to an empty string -/// \details Crypto++ 6.0 placed DEFAULT_CHANNEL in the header, rather than declaring it as extern and -/// placing the definition in the source file. As an external definition the string DEFAULT_CHANNEL -/// was subject to static initialization order fiasco problems. +/// \details The definition for DEFAULT_CHANNEL is in cryptlib.cpp. +/// It can be subject to Static +/// Initialization Order Fiasco. If you experience a crash in +/// DEFAULT_CHANNEL where the string object is NULL, then you probably have +/// a global object using DEFAULT_CHANNEL before it has been constructed. const std::string DEFAULT_CHANNEL; /// \brief Channel for additional authenticated data /// \details AAD_CHANNEL is equal to "AAD" -/// \details Crypto++ 6.0 placed AAD_CHANNEL in the header, rather than declaring it as extern and -/// placing the definition in the source file. As an external definition the string AAD_CHANNEL -/// was subject to static initialization order fiasco problems. +/// \details The definition for AAD_CHANNEL is in cryptlib.cpp. +/// It can be subject to Static +/// Initialization Order Fiasco. If you experience a crash in +/// AAD_CHANNEL where the string object is NULL, then you probably have a +/// global object using AAD_CHANNEL before it has been constructed. const std::string AAD_CHANNEL; /// \brief An empty set of name-value pairs -/// \details Crypto++ 6.0 placed g_nullNameValuePairs in the header, rather than declaring it as extern -/// and placing the definition in the source file. As an external definition the g_nullNameValuePairs -/// was subject to static initialization order fiasco problems. +/// \details The definition for g_nullNameValuePairs is in cryptlib.cpp. +/// It can be subject to Static +/// Initialization Order Fiasco. If you experience a crash in +/// g_nullNameValuePairs where the string object is NULL, then you probably +/// have a global object using g_nullNameValuePairs before it has been +/// constructed. const NameValuePairs& g_nullNameValuePairs; -// Sun Studio 12.3 and earlier can't handle NameValuePairs initialization #else extern const std::string DEFAULT_CHANNEL; extern const std::string AAD_CHANNEL;