On 04/10/2013 11:12 AM, Philip Martin wrote:
> cmpilato_at_apache.org writes:
> 
>> Author: cmpilato
>> Date: Wed Apr 10 14:38:17 2013
>> New Revision: 1466497
> 
>> +svn_swig_py_config_auth_walk_func(svn_boolean_t *delete_cred,
>> +                                  void *walk_baton,
>> +                                  const char *cred_kind,
>> +                                  const char *realmstring,
>> +                                  apr_hash_t *hash,
>> +                                  apr_pool_t *scratch_pool)
>>  {
>> -  PyObject *function = cleanup_baton;
>> +  PyObject *function = walk_baton;
>>    PyObject *result;
>> -  PyObject *py_scratch_pool;
>> +  PyObject *py_scratch_pool, *py_hash;
>>    svn_error_t *err = SVN_NO_ERROR;
>>  
>>    *delete_cred = FALSE;
>> @@ -3310,11 +3310,16 @@ svn_swig_py_auth_cleanup_func(svn_boolea
>>        err = callback_exception_error();
>>        goto finished;
>>      }
>> +  py_hash = svn_swig_py_prophash_to_dict(hash);
>> +  if (py_hash == NULL)
>> +    {
>> +      err = callback_exception_error();
>> +      goto finished;
>> +    }
> 
> This error path bypasses the Py_DECREF for py_hash.  Does that matter?
> I'm still trying to understand exactly when Py_DECREF and Py_INCREF are
> required.
You and me both.
Did you perhaps make a small mistake above?  If py_hash == NULL, I don't
think we care need to DECREF if.  But perhaps you meant to point out that
we'd be bypassing the DECREF of py_scratch_pool, instead?
-- 
C. Michael Pilato <cmpilato_at_collab.net>
CollabNet   <>   www.collab.net   <>   Enterprise Cloud Development
Received on 2013-04-10 17:19:48 CEST