\section{bug1.cpp} \footnotesize\begin{verbatim}1 // Copyright (C) 1999-2001 Open Source Telecom Corporation. 2 // 3 // This program is free software; you can redistribute it and/or modify 4 // it under the terms of the GNU General Public License as published by 5 // the Free Software Foundation; either version 2 of the License, or 6 // (at your option) any later version. 7 // 8 // This program is distributed in the hope that it will be useful, 9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 // GNU General Public License for more details. 12 // 13 // You should have received a copy of the GNU General Public License 14 // along with this program; if not, write to the Free Software 15 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 16 // 17 // As a special exception to the GNU General Public License, permission is 18 // granted for additional uses of the text contained in its release 19 // of APE. 20 // 21 // The exception is that, if you link the APE library with other files 22 // to produce an executable, this does not by itself cause the 23 // resulting executable to be covered by the GNU General Public License. 24 // Your use of that executable is in no way restricted on account of 25 // linking the APE library code into it. 26 // 27 // This exception does not however invalidate any other reasons why 28 // the executable file might be covered by the GNU General Public License. 29 // 30 // This exception applies only to the code released under the 31 // name APE. If you copy code from other releases into a copy of 32 // APE, as the General Public License permits, the exception does 33 // not apply to the code that you add in this way. To avoid misleading 34 // anyone as to the status of such modified files, you must delete 35 // this exception notice from them. 36 // 37 // If you write modifications of your own for APE, it is your choice 38 // whether to permit this exception to apply to your modifications. 39 // If you do not wish that, delete this exception notice. 40 41 #include <cc++/thread.h> 42 #include <iostream> 43 #include <cstdio> 44 45 // This was a test case for a bug report related to the final self- 46 // deleting the thread. 47 48 #ifdef CCXX_NAMESPACES 49 using namespace std; 50 using namespace ost; 51 #endif 52 53 class ThreadTest : public Thread 54 { 55 private: 56 void run() { cout << "Run()..." << endl;}; 57 void final() { cout << "Final()..." << endl;}; 58 }; 59 60 int main() 61 { 62 ThreadTest *thread = new ThreadTest; 63 cout << "before start()..." << endl; 64 // printf("THREAD is %p\n", thread); not useful in reg test 65 thread->start(); 66 Thread::sleep(5000); 67 cout << "exiting..." << endl; 68 // do not delete thread, already deleted in method Final 69 return 0; 70 } 71 72 \end{verbatim} \normalsize