diff -Naurp --exclude-from excludes old/libsemanage/src/database.c new/libsemanage/src/database.c --- old/libsemanage/src/database.c 2005-11-04 15:37:49.000000000 -0500 +++ new/libsemanage/src/database.c 2005-12-23 06:14:15.000000000 -0500 @@ -45,14 +45,18 @@ static int enter_ro( return STATUS_ERR; } -static inline void exit_ro( +static inline int exit_ro( semanage_handle_t* handle, dbase_config_t* dconfig) { + int commit_num = semanage_get_commit_number(handle); + if (!handle->is_in_transaction) { semanage_release_active_lock(handle); dconfig->dtable->drop_cache(dconfig->dbase); } + + return commit_num; } static int enter_rw( @@ -150,8 +154,7 @@ int dbase_query ( return STATUS_ERR; } - exit_ro(handle, dconfig); - return STATUS_SUCCESS; + return exit_ro(handle, dconfig); } int dbase_exists ( @@ -168,8 +171,7 @@ int dbase_exists ( return STATUS_ERR; } - exit_ro(handle, dconfig); - return STATUS_SUCCESS; + return exit_ro(handle, dconfig); } int dbase_count ( @@ -185,8 +187,7 @@ int dbase_count ( return STATUS_ERR; } - exit_ro(handle, dconfig); - return STATUS_SUCCESS; + return exit_ro(handle, dconfig); } int dbase_iterate( @@ -203,8 +204,7 @@ int dbase_iterate( return STATUS_ERR; } - exit_ro(handle, dconfig); - return STATUS_SUCCESS; + return exit_ro(handle, dconfig); } int dbase_list ( @@ -221,6 +221,5 @@ int dbase_list ( return STATUS_ERR; } - exit_ro(handle, dconfig); - return STATUS_SUCCESS; + return exit_ro(handle, dconfig); }