diff options
Diffstat (limited to 'core/services.cpp')
-rw-r--r-- | core/services.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/core/services.cpp b/core/services.cpp index 56ee05e..836b4c6 100644 --- a/core/services.cpp +++ b/core/services.cpp @@ -1,6 +1,7 @@ #include "commonheaders.h" extern std::list<service*> services; +extern boost::mutex service_list_mutex; int ServiceExists(const char *name); void CreateServiceFunction(const char* name, SERVICE svc) @@ -13,17 +14,20 @@ void* CallService(const char *name,void* data) { if(!services.empty()) { + service_list_mutex.lock(); std::list<service*>::iterator end = services.end(); for(std::list<service*>::iterator i = services.begin(); i != end; ++i) { if(!strcmp((*i)->getName(), name)) return (*i)->getService()(data); } + service_list_mutex.unlock(); } return 0; } int ServiceExists(const char *name) { + service_list_mutex.lock(); if(!services.empty()) { std::list<service*>::iterator end = services.end(); @@ -31,6 +35,7 @@ int ServiceExists(const char *name) if(!strcmp((*i)->getName(), name)) return 1; } + service_list_mutex.unlock(); return 0; } |