On Tue, 2011-01-25 at 08:28 -0800, Danny Trebbien wrote:
> > I made one tweak: in the test for detecting an error, after detecting
> > the error, we need to clear the error, otherwise the test harness
> > reports success on the individual test but reports a problem at the end
> > of the test run:
> >
> > PASS: lt-subst_translate-test 1: test svn_subst_translate_string2()
> > /home/julianfoad/bin/svn-c-test: line 35: 11406 Aborted
> >
> > So I added "svn_error_clear(err);" after "SVN_TEST_ASSERT(err->apr_err
> > == SVN_ERR_IO_INCONSISTENT_EOL);".
>
> Is the svn_error_t object reused?
It's not re-used.
Normally, an error ends up being handled by svn_handle_error2() or some
such function, which (after printing out the details) destroys the pool
that was allocated for it.
The problem was that the pool allocated for this particular error was
never being handled, and never being destroyed. Somewhere there is some
code that detects this at program exit time and throws an assertion
failure to warn us programmers of this "leak", because normally an error
not being handled indicates a mistake in the program logic (and a
leaking of memory).
> I thought that whenever an error
> occurs, a new svn_error_t object is allocated.
That's correct.
- Julian
Received on 2011-01-25 17:40:46 CET