1
0
Эх сурвалжийг харах

HttpServer::loop idx iteration exception (#726)

宅の士 8 сар өмнө
parent
commit
05bd1ca635

+ 7 - 5
http/server/HttpServer.cpp

@@ -296,12 +296,14 @@ std::shared_ptr<hv::EventLoop> HttpServer::loop(int idx) {
     if (privdata == NULL) return NULL;
     std::lock_guard<std::mutex> locker(privdata->mutex_);
     if (privdata->loops.empty()) return NULL;
-    if (idx >= 0 && idx < (int)privdata->loops.size()) {
-        return privdata->loops[idx];
+    if (idx < 0) {
+        EventLoop* cur = currentThreadEventLoop;
+        for (auto& loop : privdata->loops) {
+            if (loop.get() == cur) return loop;
+        }
     }
-    EventLoop* cur = currentThreadEventLoop;
-    for (auto& loop : privdata->loops) {
-        if (loop.get() == cur) return loop;
+    else if (idx >= 0 && idx < (int)privdata->loops.size()) {
+        return privdata->loops[idx];
     }
     return NULL;
 }