You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by ia...@apache.org on 2002/08/23 01:29:02 UTC

cvs commit: apr/threadproc/win32 thread.c

ianh        2002/08/22 16:29:01

  Modified:    .        CHANGES
               threadproc/win32 thread.c
  Log:
  Excerpt from MSVC help;
  "Like the Win32 ExitThread API, _endthreadex does not close the thread handle.
  Therefore, when you use _beginthreadex and _endthreadex,
  you must close the thread handle by calling the Win32 CloseHandle API."
  
  SUZUKI Rintaro <su...@ariel-networks.com> wrote the patch.
  
  Thanks.
  - INOUE Seiichiro <in...@ariel-networks.com>
  
  Obtained from:  SUZUKI Rintaro  <su...@ariel-networks.com>
  Submitted by:	INOUE Seiichiro <in...@ariel-networks.com>
  Reviewed by:	Will Rowe
  
  Revision  Changes    Path
  1.324     +2 -0      apr/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/apr/CHANGES,v
  retrieving revision 1.323
  retrieving revision 1.324
  diff -u -r1.323 -r1.324
  --- CHANGES	22 Aug 2002 20:34:16 -0000	1.323
  +++ CHANGES	22 Aug 2002 23:29:01 -0000	1.324
  @@ -1,4 +1,6 @@
   Changes with APR 0.9.0
  +  *) handle leak related to threads on Windows2000/XP 
  +     [INOUE Seiichiro <in...@ariel-networks.com>]
   
     *) Includes moved to INCLUDEDIR/apr-{major} (e.g. /usr/include/apr-0)
        [Greg Stein]
  
  
  
  1.48      +6 -1      apr/threadproc/win32/thread.c
  
  Index: thread.c
  ===================================================================
  RCS file: /home/cvs/apr/threadproc/win32/thread.c,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- thread.c	19 Mar 2002 17:54:00 -0000	1.47
  +++ thread.c	22 Aug 2002 23:29:01 -0000	1.48
  @@ -138,6 +138,7 @@
   #endif
       if (attr && attr->detach) {
           CloseHandle((*new)->td);
  +        (*new)->td = NULL;
       }
   
       return APR_SUCCESS;
  @@ -149,6 +150,9 @@
       thd->exitval = retval;
       apr_pool_destroy(thd->pool);
   #ifndef _WIN32_WCE
  +    if (thd->td) {
  +        CloseHandle(thd->td);
  +    }
       _endthreadex(0);
   #else
       ExitThread(0);
  @@ -172,7 +176,8 @@
   
   APR_DECLARE(apr_status_t) apr_thread_detach(apr_thread_t *thd)
   {
  -    if (CloseHandle(thd->td)) {
  +    if (thd->td && CloseHandle(thd->td)) {
  +        thd->td = NULL;
           return APR_SUCCESS;
       }
       else {