On 05/28/2008 08:10 AM, Nick Kew wrote:
On Tue, 27 May 2008, [EMAIL PROTECTED] wrote:

File Name: /srclib/apr-util/misc/apr_reslist.c
Function Name: reslist_cleanup()
Buggy Code:

  144:     apr_thread_mutex_lock(rl->listlock);
  145:
  146:     while (rl->nidle > 0) {
  147:         res = pop_resource(rl);
  148:         rl->ntotal--;
  149:         rv = destroy_resource(rl, res);
  150:         if (rv != APR_SUCCESS)
  151:             return rv;
            // the execution of apr_thread_mutex_unlock() is missed.

That return looks like a relatively serious issue.  Shouldn't
the cleanup plough on and destroy_resource on every resource
(i.e. while ntotal > 0) regardless in that loop?

IMHO yes. We can save a non APR_SUCCESS return value and return it
at the end.

Regards

RĂ¼diger

Reply via email to