From 9a5e359bb3795bf33073d1fa4a3a63a151312b33 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Mon, 11 Jan 2016 23:36:46 -0500 Subject: [PATCH] Fixed IsolatedInitialize (Issue 108) --- base32.cpp | 2 +- base64.cpp | 14 ++++++++++++++ base64.h | 6 ++---- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/base32.cpp b/base32.cpp index 80ca45610..3c7e6ee95 100644 --- a/base32.cpp +++ b/base32.cpp @@ -18,7 +18,7 @@ void Base32Encoder::IsolatedInitialize(const NameValuePairs ¶meters) void Base32Decoder::IsolatedInitialize(const NameValuePairs ¶meters) { - BaseN_Decoder::Initialize(CombinedNameValuePairs( + BaseN_Decoder::IsolatedInitialize(CombinedNameValuePairs( parameters, MakeParameters(Name::DecodingLookupArray(), GetDefaultDecodingLookupArray(), false)(Name::Log2Base(), 5, true))); } diff --git a/base64.cpp b/base64.cpp index 68c48e8ee..0edce9eae 100644 --- a/base64.cpp +++ b/base64.cpp @@ -47,6 +47,13 @@ void Base64URLEncoder::IsolatedInitialize(const NameValuePairs ¶meters) (Name::Log2Base(), 6, true))); } +void Base64Decoder::IsolatedInitialize(const NameValuePairs ¶meters) +{ + BaseN_Decoder::IsolatedInitialize(CombinedNameValuePairs( + parameters, + MakeParameters(Name::DecodingLookupArray(), GetDecodingLookupArray(), false)(Name::Log2Base(), 6, true))); +} + const int *Base64Decoder::GetDecodingLookupArray() { static volatile bool s_initialized = false; @@ -60,6 +67,13 @@ const int *Base64Decoder::GetDecodingLookupArray() return s_array; } +void Base64URLDecoder::IsolatedInitialize(const NameValuePairs ¶meters) +{ + BaseN_Decoder::IsolatedInitialize(CombinedNameValuePairs( + parameters, + MakeParameters(Name::DecodingLookupArray(), GetDecodingLookupArray(), false)(Name::Log2Base(), 6, true))); +} + const int *Base64URLDecoder::GetDecodingLookupArray() { static volatile bool s_initialized = false; diff --git a/base64.h b/base64.h index 0a6d7768f..1f2e44dbc 100644 --- a/base64.h +++ b/base64.h @@ -62,8 +62,7 @@ class Base64Decoder : public BaseN_Decoder //! \details IsolatedInitialize() is used to initialize or reinitialize an object using a variable //! number of arbitrarily typed arguments. IsolatedInitialize() does not call Initialize() on //! attached transformations. If initialization should be propagated, then use the Initialize() function. - void IsolatedInitialize(const NameValuePairs ¶meters) - {CRYPTOPP_UNUSED(parameters);} + void IsolatedInitialize(const NameValuePairs ¶meters); private: static const int * CRYPTOPP_API GetDecodingLookupArray(); @@ -123,8 +122,7 @@ class Base64URLDecoder : public BaseN_Decoder //! \details IsolatedInitialize() is used to initialize or reinitialize an object using a variable //! number of arbitrarily typed arguments. IsolatedInitialize() does not call Initialize() on //! attached transformations. If initialization should be propagated, then use the Initialize() function. - void IsolatedInitialize(const NameValuePairs ¶meters) - {CRYPTOPP_UNUSED(parameters);} + void IsolatedInitialize(const NameValuePairs ¶meters); private: static const int * CRYPTOPP_API GetDecodingLookupArray();