Reset the trace_marker pointer after deletion
BUG=chromium-os:34099
TEST=unittest
Change-Id: If1ca0b2bf6dd8fc4456f127ec0ea7f74d3617334
Reviewed-on: https://gerrit.chromium.org/gerrit/32101
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>
Commit-Ready: Chung-yih Wang <cywang@chromium.org>
Reviewed-by: Chung-yih Wang <cywang@chromium.org>
Tested-by: Chung-yih Wang <cywang@chromium.org>
diff --git a/Makefile b/Makefile
index 87b3f3a..a5a8115 100644
--- a/Makefile
+++ b/Makefile
@@ -60,6 +60,7 @@
$(OBJDIR)/split_correcting_filter_interpreter_unittest.o \
$(OBJDIR)/stuck_button_inhibitor_filter_interpreter_unittest.o \
$(OBJDIR)/t5r2_correcting_filter_interpreter_unittest.o \
+ $(OBJDIR)/trace_marker_unittest.o \
$(OBJDIR)/tracer_unittest.o \
$(OBJDIR)/util_unittest.o
diff --git a/src/trace_marker.cc b/src/trace_marker.cc
index 6c1017f..61b4937 100644
--- a/src/trace_marker.cc
+++ b/src/trace_marker.cc
@@ -24,8 +24,10 @@
}
void TraceMarker::DeleteTraceMarker() {
- if (trace_marker_count_ == 1)
+ if (trace_marker_count_ == 1) {
delete trace_marker_;
+ trace_marker_ = NULL;
+ }
trace_marker_count_--;
if (trace_marker_count_ < 0)
trace_marker_count_ = 0;
diff --git a/src/trace_marker_unittest.cc b/src/trace_marker_unittest.cc
new file mode 100644
index 0000000..f4358b6
--- /dev/null
+++ b/src/trace_marker_unittest.cc
@@ -0,0 +1,22 @@
+// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <string.h>
+
+#include <gtest/gtest.h>
+
+#include "gestures/include/trace_marker.h"
+
+namespace gestures {
+
+class TraceMarkerTest : public ::testing::Test {};
+
+TEST(TraceMarkerTest, DeleteTraceMarkerTest) {
+ EXPECT_EQ(NULL, TraceMarker::GetTraceMarker());
+ TraceMarker::CreateTraceMarker();
+ EXPECT_TRUE(NULL != TraceMarker::GetTraceMarker());
+ TraceMarker::DeleteTraceMarker();
+ EXPECT_EQ(NULL, TraceMarker::GetTraceMarker());
+};
+} // namespace gestures