summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Huston <shuston@riverace.com>2003-05-21 22:18:54 +0000
committerSteve Huston <shuston@riverace.com>2003-05-21 22:18:54 +0000
commitb2f263bf1d852668baa19dacf5f42fa7d685598b (patch)
tree989b2c5aa3ceea6f1d5f9c68f0d4e7d158fb2454
parent1f26a5388fea7b6648f68d4000ac01b1e9baabb6 (diff)
downloadATCD-b2f263bf1d852668baa19dacf5f42fa7d685598b.tar.gz
ChangeLogTag:Wed May 21 16:05:29 2003 Steve Huston <shuston@riverace.com>
-rw-r--r--ChangeLog11
-rw-r--r--THANKS1
-rw-r--r--ace/Containers_T.i6
-rw-r--r--tests/DLList_Test.cpp20
4 files changed, 35 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index b2a73dec102..31acd76d852 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+Wed May 21 16:05:29 2003 Steve Huston <shuston@riverace.com>
+
+ * ace/Containers_T.i (ACE_DLList_Reverse_Iterator<T>::next (T *&ptr)):
+ If the next() pointer is 0, don't dereference it. Thanks very much
+ to Ken Kane <kkane@livevault.com> for this fix.
+
+ * tests/DLList_Test.cpp: Added a run_reverse_iterate() test function
+ to hit the error case above.
+
+ * THANKS: Added Ken Kane <kkane@livevault.com> to the Hall of Fame.
+
Wed May 21 21:46:19 UTC 2003 Don Hinton <dhinton@dresystems.com>
* tests/Main.cpp:
diff --git a/THANKS b/THANKS
index 306e2f3caf1..91ceb3d75e4 100644
--- a/THANKS
+++ b/THANKS
@@ -1703,6 +1703,7 @@ Roland Meub <Roland.Meub@tenovis.com>
Pit Linnartz <Pit.Linnartz@t-mobile.de>
Peder Norgaard <pcn@pogt.dk>
David Ohlemacher <ohlemacher@bbn.com>
+Ken Kane <kkane@livevault.com>
I would particularly like to thank Paul Stephenson, who worked with me
at Ericsson in the early 1990's. Paul devised the recursive Makefile
diff --git a/ace/Containers_T.i b/ace/Containers_T.i
index 6ec7895fce2..e05ddbec0cc 100644
--- a/ace/Containers_T.i
+++ b/ace/Containers_T.i
@@ -1,8 +1,6 @@
/* -*- C++ -*- */
// $Id$
-// Containers.i
-
template <class T> ACE_INLINE int
ACE_Bounded_Stack<T>::is_empty (void) const
{
@@ -450,8 +448,10 @@ ACE_DLList_Reverse_Iterator<T>::next (T *&ptr)
{
ACE_DLList_Node *temp =
ACE_Double_Linked_List_Reverse_Iterator <ACE_DLList_Node>::next ();
+ if (temp == 0)
+ return 0;
ptr = (T *) temp->item_;
- return ptr ? 1 : 0;
+ return 1;
}
template <class T> ACE_INLINE T *
diff --git a/tests/DLList_Test.cpp b/tests/DLList_Test.cpp
index 746a475f58b..053366a7092 100644
--- a/tests/DLList_Test.cpp
+++ b/tests/DLList_Test.cpp
@@ -67,6 +67,22 @@ run_iterate (STRLIST &list)
}
}
+static void
+run_reverse_iterate (STRLIST &list)
+{
+ ACE_STRING *entry;
+ size_t i = 0;
+
+ for (STRLIST_REVERSE_ITERATOR iter (list);
+ iter.next (entry) != 0;
+ iter.advance (), i++)
+ {
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("iterating (%d): [%s]\n"),
+ i,
+ (ACE_TCHAR *) *entry));
+ }
+}
+
static int
run_test (void)
{
@@ -90,19 +106,23 @@ run_test (void)
string_table[i]),
-1);
run_iterate (list);
+ run_reverse_iterate (list);
}
run_iterate (list);
+ run_reverse_iterate ();
list.delete_tail ();
list.delete_tail ();
run_iterate (list);
+ run_reverse_iterate ();
list.delete_head ();
list.delete_head ();
run_iterate (list);
+ run_reverse_iterate ();
return 0;
}