Fix incorrect usages of folly::Synchronized
authorSarang Masti <mssarang@fb.com>
Tue, 28 Nov 2017 23:51:10 +0000 (15:51 -0800)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Wed, 29 Nov 2017 00:05:46 +0000 (16:05 -0800)
Summary:
We need to keep LockedPtr returned by rlock/wlock alive for the entire duration
of the loop. Else we are working on a snapshot of the data structure, which
might not be what we want.

Reviewed By: aary, ot, luciang

Differential Revision: D6426613

fbshipit-source-id: 294c0a7b9d756f3116d5cdb3a7b3678f693e0754

folly/io/async/EventBaseLocal.cpp

index cda6311375a7621bcac8d462691ffd69a7a0d5f6..c754ae7f17b659e37b48f19f1dc6a530688320b5 100644 (file)
@@ -22,7 +22,8 @@
 namespace folly { namespace detail {
 
 EventBaseLocalBase::~EventBaseLocalBase() {
-  for (auto* evb : *eventBases_.rlock()) {
+  auto locked = eventBases_.rlock();
+  for (auto* evb : *locked) {
     evb->runInEventBaseThread([ this, evb, key = key_ ] {
       evb->localStorage_.erase(key);
       evb->localStorageToDtor_.erase(this);