qtmobility/src/publishsubscribe/registrylayer_win.cpp
changeset 14 6fbed849b4f4
parent 11 06b8e2af4411
--- a/qtmobility/src/publishsubscribe/registrylayer_win.cpp	Fri Jun 11 14:26:25 2010 +0300
+++ b/qtmobility/src/publishsubscribe/registrylayer_win.cpp	Wed Jun 23 19:08:38 2010 +0300
@@ -490,6 +490,7 @@
         return false;
     } else if (result != ERROR_SUCCESS) {
         qDebug() << "RegQueryValueEx failed with error" << result;
+        *data = QVariant();
         if (createdHandle)
             removeHandle(handle);
         return false;
@@ -578,7 +579,12 @@
         DWORD subKeySize = MAX_KEY_LENGTH;
 
         result = RegEnumKeyEx(key, i, subKey, &subKeySize, 0, 0, 0, 0);
-        if (result == ERROR_NO_MORE_ITEMS)
+        if (result == ERROR_KEY_DELETED) {
+            QMetaObject::invokeMethod(this, "emitHandleChanged", Qt::QueuedConnection,
+                                      Q_ARG(void *, key));
+            break;
+        }
+        if (result != ERROR_SUCCESS)
             break;
 
         foundChildren << QString::fromWCharArray(subKey, subKeySize);
@@ -591,7 +597,12 @@
         DWORD valueNameSize = MAX_NAME_LENGTH;
 
         result = RegEnumValue(key, i, valueName, &valueNameSize, 0, 0, 0, 0);
-        if (result == ERROR_NO_MORE_ITEMS)
+        if (result == ERROR_KEY_DELETED) {
+            QMetaObject::invokeMethod(this, "emitHandleChanged", Qt::QueuedConnection,
+                                      Q_ARG(void *, key));
+            break;
+        }
+        if (result != ERROR_SUCCESS)
             break;
 
         foundChildren << QString::fromWCharArray(valueName, valueNameSize);