--- 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);