Let's not fall into an infinite loop with blocked
authorIván Briano <sachieru@gmail.com>
Fri, 29 Jun 2012 22:04:34 +0000 (22:04 +0000)
committerIván Briano <sachieru@gmail.com>
Fri, 29 Jun 2012 22:04:34 +0000 (22:04 +0000)
 requests

SVN revision: 73061

legacy/evas/src/bin/evas_cserve2_requests.c

index 4d1bda6..6908698 100644 (file)
@@ -432,6 +432,8 @@ _cserve2_requests_process(void)
          Slave_Command ctype;
          unsigned int max_workers;
          Eina_List **idle, **working;
+         Eina_Inlist *itr;
+         Font_Request *req;
 
          for (j = 0; _request_match[j].rtype != CSERVE2_REQ_LAST; j++)
            {
@@ -456,12 +458,12 @@ _cserve2_requests_process(void)
          idle = &_workers[type].idle;
          working = &_workers[type].working;
 
-         while (requests[rtype].waiting &&
-                (eina_list_count(*working) < max_workers))
+         EINA_INLIST_FOREACH_SAFE(requests[rtype].waiting, itr, req)
            {
               Slave_Worker *sw;
-              Font_Request *req = EINA_INLIST_CONTAINER_GET(
-                 requests[rtype].waiting, Font_Request);
+
+              if (eina_list_count(*working) >= max_workers)
+                break;
 
               if (req->locked)
                 continue;