This is an automated email from the ASF dual-hosted git repository. pnoltes pushed a commit to branch feature/cxx_rsa_update in repository https://gitbox.apache.org/repos/asf/celix.git
commit 8fdcfc7381329dc9734d2d208268e32655cbf1c1 Author: Pepijn Noltes <[email protected]> AuthorDate: Fri May 7 16:47:41 2021 +0200 Fixes iter loops with erase --- bundles/cxx_remote_services/admin/src/RemoteServiceAdmin.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/bundles/cxx_remote_services/admin/src/RemoteServiceAdmin.cc b/bundles/cxx_remote_services/admin/src/RemoteServiceAdmin.cc index 4ed0e2f..9a1e09e 100644 --- a/bundles/cxx_remote_services/admin/src/RemoteServiceAdmin.cc +++ b/bundles/cxx_remote_services/admin/src/RemoteServiceAdmin.cc @@ -180,11 +180,13 @@ void celix::rsa::RemoteServiceAdmin::removeService(const std::shared_ptr<void>& } void celix::rsa::RemoteServiceAdmin::createImportServices() { - for (auto it = _toBeImportedServices.begin(); it != _toBeImportedServices.end(); ++it) { + auto it = _toBeImportedServices.begin(); + while (it != _toBeImportedServices.end()) { auto interface = (*it)->getInterface(); auto existingFactory = _importServiceFactories.find(interface); if (existingFactory == end(_importServiceFactories)) { L_DEBUG("Adding endpoint to be imported but no factory available yet, delaying import"); + it++; continue; } auto endpointId = (*it)->getId(); @@ -195,18 +197,20 @@ void celix::rsa::RemoteServiceAdmin::createImportServices() { } void celix::rsa::RemoteServiceAdmin::createExportServices() { - - for (auto it = _toBeExportedServices.begin(); it != _toBeExportedServices.end(); ++it) { + auto it = _toBeExportedServices.begin(); + while (it != _toBeExportedServices.end()) { const auto& svcProperties = **it; auto serviceName = svcProperties.get(celix::SERVICE_NAME, ""); auto svcId = svcProperties.getAsLong(celix::SERVICE_ID, -1); if (serviceName.empty()) { L_WARN("Adding service to be exported but missing objectclass for svc id %li", svcId); + it++; continue; } auto factory = _exportServiceFactories.find(serviceName); if (factory == end(_exportServiceFactories)) { L_DEBUG("Adding service to be exported but no factory available yet, delaying creation"); + it++; continue; } _exportedServices.emplace(svcId, factory->second->exportService(svcProperties));
