mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-23 00:17:42 +00:00
Prevent race condition in wait
This commit is contained in:
parent
f1e0bc3e4a
commit
48b1c26dc8
@ -130,12 +130,12 @@ static void read_prop_with_cb(const prop_info *pi, void *cb) {
|
|||||||
|
|
||||||
template<class StringType>
|
template<class StringType>
|
||||||
struct prop_to_string : prop_cb {
|
struct prop_to_string : prop_cb {
|
||||||
void exec(const char *, const char *value, uint32_t serial) override {
|
void exec(const char *, const char *value, uint32_t s) override {
|
||||||
val = value;
|
val = value;
|
||||||
s = serial;
|
serial = s;
|
||||||
}
|
}
|
||||||
StringType val;
|
StringType val;
|
||||||
uint32_t s;
|
uint32_t serial;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<> void prop_to_string<rust::String>::exec(const char *, const char *value, uint32_t) {
|
template<> void prop_to_string<rust::String>::exec(const char *, const char *value, uint32_t) {
|
||||||
@ -237,7 +237,7 @@ static StringType wait_prop(const char *name, const char *old_value) {
|
|||||||
if (old_value == nullptr || cb.val == old_value) {
|
if (old_value == nullptr || cb.val == old_value) {
|
||||||
LOGD("resetprop: waiting for prop [%s]\n", name);
|
LOGD("resetprop: waiting for prop [%s]\n", name);
|
||||||
uint32_t new_serial;
|
uint32_t new_serial;
|
||||||
system_property_wait(pi, pi->serial, &new_serial, nullptr);
|
system_property_wait(pi, cb.serial, &new_serial, nullptr);
|
||||||
read_prop_with_cb(pi, &cb);
|
read_prop_with_cb(pi, &cb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user