Stop capturing mtp_event by reference in lambda

This takes a reference to the event,
which then can become invalid. Instead
pass by copy like normal.

Bug: 64529223
Test: No crash
Change-Id: I2ac7bd0002e6d0ce1c547c24334dfd2926ed7090
gugelfrei
Jerry Zhang 7 years ago
parent ad708fb449
commit 7360303d3e

@ -724,7 +724,7 @@ int MtpFfsHandle::sendEvent(mtp_event me) {
char *temp = new char[me.length];
memcpy(temp, me.data, me.length);
me.data = temp;
std::thread t([&me](MtpFfsHandle *h) { return h->doSendEvent(me); }, this);
std::thread t([this, me]() { return this->doSendEvent(me); });
t.detach();
return 0;
}
@ -732,9 +732,9 @@ int MtpFfsHandle::sendEvent(mtp_event me) {
void MtpFfsHandle::doSendEvent(mtp_event me) {
unsigned length = me.length;
int ret = ::write(mIntr, me.data, length);
delete[] reinterpret_cast<char*>(me.data);
if (static_cast<unsigned>(ret) != length)
PLOG(ERROR) << "Mtp error sending event thread!";
delete[] reinterpret_cast<char*>(me.data);
}
} // namespace android

Loading…
Cancel
Save