You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2010/11/21 15:18:10 UTC

svn commit: r1037466 - /subversion/branches/performance/subversion/libsvn_subr/svn_file_handle_cache.c

Author: stefan2
Date: Sun Nov 21 14:18:09 2010
New Revision: 1037466

URL: http://svn.apache.org/viewvc?rev=1037466&view=rev
Log:
Fix an error leak in the cached file handle destructor
(called during pool cleanup).

* subversion/libsvn_subr/svn_file_handle_cache.c
  (close_handle_before_cleanup): clear error

Modified:
    subversion/branches/performance/subversion/libsvn_subr/svn_file_handle_cache.c

Modified: subversion/branches/performance/subversion/libsvn_subr/svn_file_handle_cache.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/svn_file_handle_cache.c?rev=1037466&r1=1037465&r2=1037466&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/svn_file_handle_cache.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/svn_file_handle_cache.c Sun Nov 21 14:18:09 2010
@@ -526,6 +526,7 @@ close_handle_before_cleanup(void *handle
 {
   svn_file_handle_cache__handle_t *f = handle_void;
   svn_error_t *err = SVN_NO_ERROR;
+  apr_status_t result = APR_SUCCESS;
 
   /* if this hasn't been done before: 
    * "close" the handle, i.e. return it to the cache 
@@ -537,7 +538,14 @@ close_handle_before_cleanup(void *handle
   f->entry = NULL;
   f->cache = NULL;
 
-  return err ? err->apr_err : APR_SUCCESS;
+  /* process error returns */
+  if (err)
+    {
+      result = err->apr_err;
+      svn_error_clear(err);
+    }
+
+  return result;
 }
 
 /* Create a cached file handle to be returned to the application in F for