Use mutex_guard to lock su_info

This commit is contained in:
topjohnwu 2019-09-26 01:49:50 -04:00
parent 947dae4900
commit b763b81f56
2 changed files with 5 additions and 12 deletions

View File

@ -5,6 +5,7 @@
#include <memory>
#include <db.h>
#include <utils.h>
#define DEFAULT_SHELL "/system/bin/sh"
@ -29,8 +30,7 @@ public:
su_info(unsigned uid = 0);
~su_info();
void lock();
void unlock();
mutex_guard lock();
bool is_fresh();
void refresh();

View File

@ -33,12 +33,8 @@ su_info::~su_info() {
pthread_mutex_destroy(&_lock);
}
void su_info::lock() {
pthread_mutex_lock(&_lock);
}
void su_info::unlock() {
pthread_mutex_unlock(&_lock);
mutex_guard su_info::lock() {
return mutex_guard(_lock);
}
bool su_info::is_fresh() {
@ -96,10 +92,7 @@ static shared_ptr<su_info> get_su_info(unsigned uid) {
info = cached;
}
info->lock();
run_finally unlock([&] {
info->unlock();
});
auto g = info->lock();
if (info->access.policy == QUERY) {
// Not cached, get data from database