aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/google/protobuf/stubs/once.cc6
-rw-r--r--src/google/protobuf/stubs/once.h1
2 files changed, 7 insertions, 0 deletions
diff --git a/src/google/protobuf/stubs/once.cc b/src/google/protobuf/stubs/once.cc
index b47a031c..3c53bcd7 100644
--- a/src/google/protobuf/stubs/once.cc
+++ b/src/google/protobuf/stubs/once.cc
@@ -56,6 +56,12 @@ struct GoogleOnceInternal {
CRITICAL_SECTION critical_section;
};
+GoogleOnceType::~GoogleOnceType()
+{
+ delete internal_;
+ internal_ = NULL;
+}
+
GoogleOnceType::GoogleOnceType() {
// internal_ may be non-NULL if Init() was already called.
if (internal_ == NULL) internal_ = new GoogleOnceInternal;
diff --git a/src/google/protobuf/stubs/once.h b/src/google/protobuf/stubs/once.h
index 61c5f362..22b0d4e6 100644
--- a/src/google/protobuf/stubs/once.h
+++ b/src/google/protobuf/stubs/once.h
@@ -87,6 +87,7 @@ struct GoogleOnceInternal;
struct LIBPROTOBUF_EXPORT GoogleOnceType {
GoogleOnceType();
+ ~GoogleOnceType();
void Init(void (*init_func)());
volatile bool initialized_;