diff --git a/src/bluetooth/qlowenergycontroller_osx.mm b/src/bluetooth/qlowenergycontroller_osx.mm
index 46782a2223d6aa5aa684325fbc95f23dc7088b4e..d01686ae62602a9ae069062aef7202ff274a716b 100644
--- a/src/bluetooth/qlowenergycontroller_osx.mm
+++ b/src/bluetooth/qlowenergycontroller_osx.mm
@@ -1372,6 +1372,7 @@ QLowEnergyService *QLowEnergyController::addService(const QLowEnergyServiceData
 
     if (const auto servicePrivate = [osx_d_ptr->peripheralManager addService:data]) {
         servicePrivate->setController(osx_d_ptr);
+        servicePrivate->state = QLowEnergyService::LocalService;
         osx_d_ptr->discoveredServices.insert(servicePrivate->uuid, servicePrivate);
         return new QLowEnergyService(servicePrivate, parent);
     }
diff --git a/src/bluetooth/qlowenergycontrollerbase.cpp b/src/bluetooth/qlowenergycontrollerbase.cpp
index bfdd61a6d496e6e9752b245b03c491c08fa864b9..86108648bb9d1ed690f844fef2e9f2c03eee012b 100644
--- a/src/bluetooth/qlowenergycontrollerbase.cpp
+++ b/src/bluetooth/qlowenergycontrollerbase.cpp
@@ -255,10 +255,11 @@ quint16 QLowEnergyControllerPrivate::updateValueOfDescriptor(
 
 void QLowEnergyControllerPrivate::invalidateServices()
 {
-    for (QSharedPointer<QLowEnergyServicePrivate> service : serviceList.values()) {
+    for (QSharedPointer<QLowEnergyServicePrivate> service : serviceList.values())
+        service->setController(nullptr);
+
+    for (QSharedPointer<QLowEnergyServicePrivate> service : localServices.values())
         service->setController(nullptr);
-        service->setState(QLowEnergyService::InvalidService);
-    }
 
     serviceList.clear();
     localServices.clear();
@@ -273,8 +274,8 @@ QLowEnergyService *QLowEnergyControllerPrivate::addServiceHelper(
     // for it.
 
     const auto servicePrivate = QSharedPointer<QLowEnergyServicePrivate>::create();
-    servicePrivate->state = QLowEnergyService::LocalService;
     servicePrivate->setController(this);
+    servicePrivate->state = QLowEnergyService::LocalService;
     servicePrivate->uuid = service.uuid();
     servicePrivate->type = service.type() == QLowEnergyServiceData::ServiceTypePrimary
             ? QLowEnergyService::PrimaryService : QLowEnergyService::IncludedService;