You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2012/12/14 22:27:43 UTC
svn commit: r1422100 - /subversion/trunk/subversion/libsvn_fs_fs/rep-cache.c
Author: philip
Date: Fri Dec 14 21:27:41 2012
New Revision: 1422100
URL: http://svn.apache.org/viewvc?rev=1422100&view=rev
Log:
Delay storing the database handle to avoid an assert when using
the handle of a database that failed to open due to permissions.
* subversion/libsvn_fs_fs/rep-cache.db
(open_rep_cache): Store handle later.
Modified:
subversion/trunk/subversion/libsvn_fs_fs/rep-cache.c
Modified: subversion/trunk/subversion/libsvn_fs_fs/rep-cache.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/rep-cache.c?rev=1422100&r1=1422099&r2=1422100&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/rep-cache.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/rep-cache.c Fri Dec 14 21:27:41 2012
@@ -76,26 +76,30 @@ open_rep_cache(void *baton,
{
svn_fs_t *fs = baton;
fs_fs_data_t *ffd = fs->fsap_data;
+ svn_sqlite__db_t *sdb;
const char *db_path;
int version;
/* Open (or create) the sqlite database. It will be automatically
closed when fs->pool is destoyed. */
db_path = path_rep_cache_db(fs->path, pool);
- SVN_ERR(svn_sqlite__open(&ffd->rep_cache_db, db_path,
+ SVN_ERR(svn_sqlite__open(&sdb, db_path,
svn_sqlite__mode_rwcreate, statements,
0, NULL,
fs->pool, pool));
- SVN_ERR(svn_sqlite__read_schema_version(&version, ffd->rep_cache_db, pool));
+ SVN_ERR(svn_sqlite__read_schema_version(&version, sdb, pool));
if (version < REP_CACHE_SCHEMA_FORMAT)
{
/* Must be 0 -- an uninitialized (no schema) database. Create
the schema. Results in schema version of 1. */
- SVN_ERR(svn_sqlite__exec_statements(ffd->rep_cache_db,
- STMT_CREATE_SCHEMA));
+ SVN_ERR(svn_sqlite__exec_statements(sdb, STMT_CREATE_SCHEMA));
}
+ /* This is used as a flag that the database is available so don't
+ set it earlier. */
+ ffd->rep_cache_db = sdb;
+
return SVN_NO_ERROR;
}