aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Bachmeyer <jcb@gnu.org>2022-11-30 23:22:32 -0600
committerJacob Bachmeyer <jcb@gnu.org>2022-11-30 23:22:32 -0600
commitac0996ca907ea71f5e9a17ea1b50238f461dc60e (patch)
tree8c852d78bc4d82d97898b47037c863c06dc33f27
parentcc2dcde3edb178434be6ce74fdd12322a35fcfb5 (diff)
Avoid spurious reinitialization in TestState
-rw-r--r--ChangeLog3
-rw-r--r--dejagnu.h7
2 files changed, 9 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 27d1b57..801cfa7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2022-11-30 Jacob Bachmeyer <jcb@gnu.org>
+ * dejagnu.h (TestState::TestState): Only perform initialization
+ when the first TestState object is constructed.
+
* dejagnu.h (DG__endmsg): New function, called using atexit().
(endmsg_registered, TestState_count): Add fields to DG__status.
(DG__init): New function, to register DG__endmsg.
diff --git a/dejagnu.h b/dejagnu.h
index 920ff69..571ee51 100644
--- a/dejagnu.h
+++ b/dejagnu.h
@@ -218,6 +218,12 @@ class TestState {
public:
TestState (void)
{
+ DG__status.TestState_count++;
+
+ if (DG__status.TestState_count > 1)
+ return; /* Do not clear the counters if additional TestState
+ objects are constructed. */
+
DG__status.pass = 0;
DG__status.fail = 0;
DG__status.xpass = 0;
@@ -228,7 +234,6 @@ class TestState {
/* C++ object destruction will substitute for atexit(). */
DG__status.endmsg_registered = 1;
- DG__status.TestState_count++;
}
~TestState (void)