diff options
author | Steve Huston <shuston@riverace.com> | 2003-05-21 22:18:54 +0000 |
---|---|---|
committer | Steve Huston <shuston@riverace.com> | 2003-05-21 22:18:54 +0000 |
commit | b2f263bf1d852668baa19dacf5f42fa7d685598b (patch) | |
tree | 989b2c5aa3ceea6f1d5f9c68f0d4e7d158fb2454 | |
parent | 1f26a5388fea7b6648f68d4000ac01b1e9baabb6 (diff) | |
download | ATCD-b2f263bf1d852668baa19dacf5f42fa7d685598b.tar.gz |
ChangeLogTag:Wed May 21 16:05:29 2003 Steve Huston <shuston@riverace.com>
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | THANKS | 1 | ||||
-rw-r--r-- | ace/Containers_T.i | 6 | ||||
-rw-r--r-- | tests/DLList_Test.cpp | 20 |
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: @@ -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; } |