> URL: http://svn.apache.org/viewvc?rev=1422042&view=rev
> Log: > Fix issue 4210, rep-cache not reseting SQLite statements on error. I noticed the other day that WC DB code in many places fails to reset stmts on error, but that svn_sqlite__get_statement() automatically resets the stmt if it hasn't been reset since last used. Does this tally with your understanding of what you just fixed in the rep-cache -- that is, it could be described as a functionally harmless coding style violation? If so it would be good to say so in log msg & issue to indicate it doesn't need back-porting. - Julian > * subversion/libsvn_fs_fs/rep-cache.c > (svn_fs_fs__walk_rep_reference): Move a reset earlier, catch errors > and reset before returning. > (svn_fs_fs__get_rep_reference): Move a reset earlier. > Modified: subversion/trunk/subversion/libsvn_fs_fs/rep-cache.c > /* Check global invariants. */ > if (start == 0) > { > - svn_sqlite__stmt_t *stmt2; > svn_revnum_t max; > > - SVN_ERR(svn_sqlite__get_statement(&stmt2, ffd->rep_cache_db, > + SVN_ERR(svn_sqlite__get_statement(&stmt, ffd->rep_cache_db, > STMT_GET_MAX_REV)); > - SVN_ERR(svn_sqlite__step(&have_row, stmt2)); > - max = svn_sqlite__column_revnum(stmt2, 0); > + SVN_ERR(svn_sqlite__step(&have_row, stmt)); > + max = svn_sqlite__column_revnum(stmt, 0); > + SVN_ERR(svn_sqlite__reset(stmt)); > if (SVN_IS_VALID_REVNUM(max)) /* The rep-cache could be empty. */ > SVN_ERR(svn_fs_fs__revision_exists(max, fs, iterpool)); > - SVN_ERR(svn_sqlite__reset(stmt2)); [...]