Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsAudio.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsAudio.cpp	(revision 94666)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsAudio.cpp	(revision 94667)
@@ -93,9 +93,13 @@
 bool UIMachineSettingsAudio::changed() const
 {
-    return m_pCache->wasChanged();
+    return m_pCache ? m_pCache->wasChanged() : false;
 }
 
 void UIMachineSettingsAudio::loadToCacheFrom(QVariant &data)
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return;
+
     /* Fetch data to machine: */
     UISettingsPageMachine::fetchData(data);
@@ -104,5 +108,5 @@
     m_pCache->clear();
 
-    /* Prepare old audio data: */
+    /* Prepare old data: */
     UIDataSettingsMachineAudio oldAudioData;
 
@@ -111,5 +115,5 @@
     if (!comAdapter.isNull())
     {
-        /* Gather old audio data: */
+        /* Gather old data: */
         oldAudioData.m_fAudioEnabled = comAdapter.GetEnabled();
         oldAudioData.m_audioDriverType = comAdapter.GetAudioDriver();
@@ -119,5 +123,5 @@
     }
 
-    /* Cache old audio data: */
+    /* Cache old data: */
     m_pCache->cacheInitialData(oldAudioData);
 
@@ -128,13 +132,22 @@
 void UIMachineSettingsAudio::getFromCache()
 {
-    /* Get old audio data from cache: */
+    /* Sanity check: */
+    if (!m_pCache)
+        return;
+
+    /* Get old data from cache: */
     const UIDataSettingsMachineAudio &oldAudioData = m_pCache->base();
 
-    /* Load old audio data from cache: */
+    /* Load old data from cache: */
     m_pCheckBoxAudio->setChecked(oldAudioData.m_fAudioEnabled);
-    m_pEditorAudioHostDriver->setValue(oldAudioData.m_audioDriverType);
-    m_pEditorAudioController->setValue(oldAudioData.m_audioControllerType);
-    m_pEditorAudioFeatures->setEnableOutput(oldAudioData.m_fAudioOutputEnabled);
-    m_pEditorAudioFeatures->setEnableInput(oldAudioData.m_fAudioInputEnabled);
+    if (m_pEditorAudioHostDriver)
+        m_pEditorAudioHostDriver->setValue(oldAudioData.m_audioDriverType);
+    if (m_pEditorAudioController)
+        m_pEditorAudioController->setValue(oldAudioData.m_audioControllerType);
+    if (m_pEditorAudioFeatures)
+    {
+        m_pEditorAudioFeatures->setEnableOutput(oldAudioData.m_fAudioOutputEnabled);
+        m_pEditorAudioFeatures->setEnableInput(oldAudioData.m_fAudioInputEnabled);
+    }
 
     /* Polish page finally: */
@@ -144,15 +157,23 @@
 void UIMachineSettingsAudio::putToCache()
 {
-    /* Prepare new audio data: */
+    /* Sanity check: */
+    if (!m_pCache)
+        return;
+
+    /* Prepare new data: */
     UIDataSettingsMachineAudio newAudioData;
 
-    /* Gather new audio data: */
-    newAudioData.m_fAudioEnabled = m_pCheckBoxAudio->isChecked();
-    newAudioData.m_audioDriverType = m_pEditorAudioHostDriver->value();
-    newAudioData.m_audioControllerType = m_pEditorAudioController->value();
-    newAudioData.m_fAudioOutputEnabled = m_pEditorAudioFeatures->outputEnabled();
-    newAudioData.m_fAudioInputEnabled = m_pEditorAudioFeatures->inputEnabled();
-
-    /* Cache new audio data: */
+    /* Cache new data: */
+    if (m_pCheckBoxAudio)
+        newAudioData.m_fAudioEnabled = m_pCheckBoxAudio->isChecked();
+    if (m_pEditorAudioHostDriver)
+        newAudioData.m_audioDriverType = m_pEditorAudioHostDriver->value();
+    if (m_pEditorAudioController)
+        newAudioData.m_audioControllerType = m_pEditorAudioController->value();
+    if (m_pEditorAudioFeatures)
+    {
+        newAudioData.m_fAudioOutputEnabled = m_pEditorAudioFeatures->outputEnabled();
+        newAudioData.m_fAudioInputEnabled = m_pEditorAudioFeatures->inputEnabled();
+    }
     m_pCache->cacheCurrentData(newAudioData);
 }
@@ -273,4 +294,8 @@
 bool UIMachineSettingsAudio::saveData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -278,7 +303,7 @@
     if (fSuccess && isMachineInValidMode() && m_pCache->wasChanged())
     {
-        /* Get old audio data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineAudio &oldAudioData = m_pCache->base();
-        /* Get new audio data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineAudio &newAudioData = m_pCache->data();
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp	(revision 94666)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp	(revision 94667)
@@ -355,9 +355,13 @@
 bool UIMachineSettingsDisplay::changed() const
 {
-    return m_pCache->wasChanged();
+    return m_pCache ? m_pCache->wasChanged() : false;
 }
 
 void UIMachineSettingsDisplay::loadToCacheFrom(QVariant &data)
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return;
+
     /* Fetch data to machine: */
     UISettingsPageMachine::fetchData(data);
@@ -366,5 +370,5 @@
     m_pCache->clear();
 
-    /* Prepare old display data: */
+    /* Prepare old data: */
     UIDataSettingsMachineDisplay oldDisplayData;
 
@@ -423,5 +427,5 @@
     }
 
-    /* Cache old display data: */
+    /* Cache old data: */
     m_pCache->cacheInitialData(oldDisplayData);
 
@@ -432,14 +436,24 @@
 void UIMachineSettingsDisplay::getFromCache()
 {
-    /* Get old display data from cache: */
+    /* Sanity check: */
+    if (!m_pCache)
+        return;
+
+    /* Get old data from cache: */
     const UIDataSettingsMachineDisplay &oldDisplayData = m_pCache->base();
 
     /* Load old 'Screen' data from cache: */
-    m_pEditorMonitorCount->setValue(oldDisplayData.m_cGuestScreenCount);
-    m_pEditorScaleFactor->setScaleFactors(oldDisplayData.m_scaleFactors);
-    m_pEditorScaleFactor->setMonitorCount(oldDisplayData.m_cGuestScreenCount);
-    m_pEditorGraphicsController->setValue(oldDisplayData.m_graphicsControllerType);
-#ifdef VBOX_WITH_3D_ACCELERATION
-    m_pEditorDisplayScreenFeatures->setEnable3DAcceleration(oldDisplayData.m_f3dAccelerationEnabled);
+    if (m_pEditorMonitorCount)
+        m_pEditorMonitorCount->setValue(oldDisplayData.m_cGuestScreenCount);
+    if (m_pEditorScaleFactor)
+    {
+        m_pEditorScaleFactor->setScaleFactors(oldDisplayData.m_scaleFactors);
+        m_pEditorScaleFactor->setMonitorCount(oldDisplayData.m_cGuestScreenCount);
+    }
+    if (m_pEditorGraphicsController)
+        m_pEditorGraphicsController->setValue(oldDisplayData.m_graphicsControllerType);
+#ifdef VBOX_WITH_3D_ACCELERATION
+    if (m_pEditorDisplayScreenFeatures)
+        m_pEditorDisplayScreenFeatures->setEnable3DAcceleration(oldDisplayData.m_f3dAccelerationEnabled);
 #endif
     /* Push required value to m_pEditorVideoMemorySize: */
@@ -450,5 +464,6 @@
 #endif
     // Should be the last one for this tab, since it depends on some of others:
-    m_pEditorVideoMemorySize->setValue(oldDisplayData.m_iCurrentVRAM);
+    if (m_pEditorVideoMemorySize)
+        m_pEditorVideoMemorySize->setValue(oldDisplayData.m_iCurrentVRAM);
 
     /* If remote display server is supported: */
@@ -456,39 +471,45 @@
     {
         /* Load old 'Remote Display' data from cache: */
-        m_pEditorVRDESettings->setFeatureEnabled(oldDisplayData.m_fRemoteDisplayServerEnabled);
-        m_pEditorVRDESettings->setPort(oldDisplayData.m_strRemoteDisplayPort);
-        m_pEditorVRDESettings->setAuthType(oldDisplayData.m_remoteDisplayAuthType);
-        m_pEditorVRDESettings->setTimeout(QString::number(oldDisplayData.m_uRemoteDisplayTimeout));
-        m_pEditorVRDESettings->setMultipleConnectionsAllowed(oldDisplayData.m_fRemoteDisplayMultiConnAllowed);
-    }
-
-    /* Load old 'Recording' data from cache: */
-    m_pEditorRecordingSettings->setFeatureEnabled(oldDisplayData.m_fRecordingEnabled);
-    m_pEditorRecordingSettings->setFolder(oldDisplayData.m_strRecordingFolder);
-    m_pEditorRecordingSettings->setFilePath(oldDisplayData.m_strRecordingFilePath);
-    m_pEditorRecordingSettings->setFrameWidth(oldDisplayData.m_iRecordingVideoFrameWidth);
-    m_pEditorRecordingSettings->setFrameHeight(oldDisplayData.m_iRecordingVideoFrameHeight);
-    m_pEditorRecordingSettings->setFrameRate(oldDisplayData.m_iRecordingVideoFrameRate);
-    m_pEditorRecordingSettings->setBitRate(oldDisplayData.m_iRecordingVideoBitRate);
-    m_pEditorRecordingSettings->setScreens(oldDisplayData.m_vecRecordingScreens);
-
-    /* Load old 'Recording' options: */
-    const bool fRecordVideo =
-        UIDataSettingsMachineDisplay::isRecordingOptionEnabled(oldDisplayData.m_strRecordingVideoOptions,
-                                                               UIDataSettingsMachineDisplay::RecordingOption_VC);
-    const bool fRecordAudio =
-        UIDataSettingsMachineDisplay::isRecordingOptionEnabled(oldDisplayData.m_strRecordingVideoOptions,
-                                                               UIDataSettingsMachineDisplay::RecordingOption_AC);
-    UISettingsDefs::RecordingMode enmMode;
-    if (fRecordAudio && fRecordVideo)
-        enmMode = UISettingsDefs::RecordingMode_VideoAudio;
-    else if (fRecordAudio && !fRecordVideo)
-        enmMode = UISettingsDefs::RecordingMode_AudioOnly;
-    else
-        enmMode = UISettingsDefs::RecordingMode_VideoOnly;
-    m_pEditorRecordingSettings->setMode(enmMode);
-    const int iAudioQualityRate =
-        UIDataSettingsMachineDisplay::getAudioQualityFromOptions(oldDisplayData.m_strRecordingVideoOptions);
-    m_pEditorRecordingSettings->setAudioQualityRate(iAudioQualityRate);
+        if (m_pEditorVRDESettings)
+        {
+            m_pEditorVRDESettings->setFeatureEnabled(oldDisplayData.m_fRemoteDisplayServerEnabled);
+            m_pEditorVRDESettings->setPort(oldDisplayData.m_strRemoteDisplayPort);
+            m_pEditorVRDESettings->setAuthType(oldDisplayData.m_remoteDisplayAuthType);
+            m_pEditorVRDESettings->setTimeout(QString::number(oldDisplayData.m_uRemoteDisplayTimeout));
+            m_pEditorVRDESettings->setMultipleConnectionsAllowed(oldDisplayData.m_fRemoteDisplayMultiConnAllowed);
+        }
+    }
+
+    if (m_pEditorRecordingSettings)
+    {
+        /* Load old 'Recording' data from cache: */
+        m_pEditorRecordingSettings->setFeatureEnabled(oldDisplayData.m_fRecordingEnabled);
+        m_pEditorRecordingSettings->setFolder(oldDisplayData.m_strRecordingFolder);
+        m_pEditorRecordingSettings->setFilePath(oldDisplayData.m_strRecordingFilePath);
+        m_pEditorRecordingSettings->setFrameWidth(oldDisplayData.m_iRecordingVideoFrameWidth);
+        m_pEditorRecordingSettings->setFrameHeight(oldDisplayData.m_iRecordingVideoFrameHeight);
+        m_pEditorRecordingSettings->setFrameRate(oldDisplayData.m_iRecordingVideoFrameRate);
+        m_pEditorRecordingSettings->setBitRate(oldDisplayData.m_iRecordingVideoBitRate);
+        m_pEditorRecordingSettings->setScreens(oldDisplayData.m_vecRecordingScreens);
+
+        /* Load old 'Recording' options: */
+        const bool fRecordVideo =
+            UIDataSettingsMachineDisplay::isRecordingOptionEnabled(oldDisplayData.m_strRecordingVideoOptions,
+                                                                   UIDataSettingsMachineDisplay::RecordingOption_VC);
+        const bool fRecordAudio =
+            UIDataSettingsMachineDisplay::isRecordingOptionEnabled(oldDisplayData.m_strRecordingVideoOptions,
+                                                                   UIDataSettingsMachineDisplay::RecordingOption_AC);
+        UISettingsDefs::RecordingMode enmMode;
+        if (fRecordAudio && fRecordVideo)
+            enmMode = UISettingsDefs::RecordingMode_VideoAudio;
+        else if (fRecordAudio && !fRecordVideo)
+            enmMode = UISettingsDefs::RecordingMode_AudioOnly;
+        else
+            enmMode = UISettingsDefs::RecordingMode_VideoOnly;
+        m_pEditorRecordingSettings->setMode(enmMode);
+        const int iAudioQualityRate =
+            UIDataSettingsMachineDisplay::getAudioQualityFromOptions(oldDisplayData.m_strRecordingVideoOptions);
+        m_pEditorRecordingSettings->setAudioQualityRate(iAudioQualityRate);
+    }
 
     /* Polish page finally: */
@@ -501,18 +522,29 @@
 void UIMachineSettingsDisplay::putToCache()
 {
-    /* Prepare new display data: */
+    /* Sanity check: */
+    if (!m_pCache)
+        return;
+
+    /* Prepare new data: */
     UIDataSettingsMachineDisplay newDisplayData;
 
     /* Gather new 'Screen' data: */
-    newDisplayData.m_iCurrentVRAM = m_pEditorVideoMemorySize->value();
-    newDisplayData.m_cGuestScreenCount = m_pEditorMonitorCount->value();
-    newDisplayData.m_scaleFactors = m_pEditorScaleFactor->scaleFactors();
-    newDisplayData.m_graphicsControllerType = m_pEditorGraphicsController->value();
-#ifdef VBOX_WITH_3D_ACCELERATION
-    newDisplayData.m_f3dAccelerationEnabled = m_pEditorDisplayScreenFeatures->isEnabled3DAcceleration();
-#endif
+    if (m_pEditorVideoMemorySize)
+        newDisplayData.m_iCurrentVRAM = m_pEditorVideoMemorySize->value();
+    if (m_pEditorMonitorCount)
+        newDisplayData.m_cGuestScreenCount = m_pEditorMonitorCount->value();
+    if (m_pEditorScaleFactor)
+        newDisplayData.m_scaleFactors = m_pEditorScaleFactor->scaleFactors();
+    if (m_pEditorGraphicsController)
+        newDisplayData.m_graphicsControllerType = m_pEditorGraphicsController->value();
+#ifdef VBOX_WITH_3D_ACCELERATION
+    if (m_pEditorDisplayScreenFeatures)
+        newDisplayData.m_f3dAccelerationEnabled = m_pEditorDisplayScreenFeatures->isEnabled3DAcceleration();
+#endif
+
     /* If remote display server is supported: */
     newDisplayData.m_fRemoteDisplayServerSupported = m_pCache->base().m_fRemoteDisplayServerSupported;
-    if (newDisplayData.m_fRemoteDisplayServerSupported)
+    if (   newDisplayData.m_fRemoteDisplayServerSupported
+        && m_pEditorVRDESettings)
     {
         /* Gather new 'Remote Display' data: */
@@ -524,38 +556,41 @@
     }
 
-    /* Gather new 'Recording' data: */
-    newDisplayData.m_fRecordingEnabled = m_pEditorRecordingSettings->isFeatureEnabled();
-    newDisplayData.m_strRecordingFolder = m_pEditorRecordingSettings->folder();
-    newDisplayData.m_strRecordingFilePath = m_pEditorRecordingSettings->filePath();
-    newDisplayData.m_iRecordingVideoFrameWidth = m_pEditorRecordingSettings->frameWidth();
-    newDisplayData.m_iRecordingVideoFrameHeight = m_pEditorRecordingSettings->frameHeight();
-    newDisplayData.m_iRecordingVideoFrameRate = m_pEditorRecordingSettings->frameRate();
-    newDisplayData.m_iRecordingVideoBitRate = m_pEditorRecordingSettings->bitRate();
-    newDisplayData.m_vecRecordingScreens = m_pEditorRecordingSettings->screens();
-
-    /* Gather new 'Recording' options: */
-    const UISettingsDefs::RecordingMode enmRecordingMode = m_pEditorRecordingSettings->mode();
-    QStringList optionValues;
-    optionValues.append(     (enmRecordingMode == UISettingsDefs::RecordingMode_VideoAudio)
-                          || (enmRecordingMode == UISettingsDefs::RecordingMode_VideoOnly)
-                        ? "true" : "false");
-    optionValues.append(     (enmRecordingMode == UISettingsDefs::RecordingMode_VideoAudio)
-                          || (enmRecordingMode == UISettingsDefs::RecordingMode_AudioOnly)
-                        ? "true" : "false");
-    switch (m_pEditorRecordingSettings->audioQualityRate())
-    {
-        case 1: optionValues.append("low"); break;
-        case 2: optionValues.append("med"); break;
-        default: optionValues.append("high"); break;
-    }
-    QVector<UIDataSettingsMachineDisplay::RecordingOption> optionKeys;
-    optionKeys.append(UIDataSettingsMachineDisplay::RecordingOption_VC);
-    optionKeys.append(UIDataSettingsMachineDisplay::RecordingOption_AC);
-    optionKeys.append(UIDataSettingsMachineDisplay::RecordingOption_AC_Profile);
-    newDisplayData.m_strRecordingVideoOptions =
-        UIDataSettingsMachineDisplay::setRecordingOptions(m_pCache->base().m_strRecordingVideoOptions,
-                                                          optionKeys, optionValues);
-
-    /* Cache new display data: */
+    if (m_pEditorRecordingSettings)
+    {
+        /* Gather new 'Recording' data: */
+        newDisplayData.m_fRecordingEnabled = m_pEditorRecordingSettings->isFeatureEnabled();
+        newDisplayData.m_strRecordingFolder = m_pEditorRecordingSettings->folder();
+        newDisplayData.m_strRecordingFilePath = m_pEditorRecordingSettings->filePath();
+        newDisplayData.m_iRecordingVideoFrameWidth = m_pEditorRecordingSettings->frameWidth();
+        newDisplayData.m_iRecordingVideoFrameHeight = m_pEditorRecordingSettings->frameHeight();
+        newDisplayData.m_iRecordingVideoFrameRate = m_pEditorRecordingSettings->frameRate();
+        newDisplayData.m_iRecordingVideoBitRate = m_pEditorRecordingSettings->bitRate();
+        newDisplayData.m_vecRecordingScreens = m_pEditorRecordingSettings->screens();
+
+        /* Gather new 'Recording' options: */
+        const UISettingsDefs::RecordingMode enmRecordingMode = m_pEditorRecordingSettings->mode();
+        QStringList optionValues;
+        optionValues.append(     (enmRecordingMode == UISettingsDefs::RecordingMode_VideoAudio)
+                              || (enmRecordingMode == UISettingsDefs::RecordingMode_VideoOnly)
+                            ? "true" : "false");
+        optionValues.append(     (enmRecordingMode == UISettingsDefs::RecordingMode_VideoAudio)
+                              || (enmRecordingMode == UISettingsDefs::RecordingMode_AudioOnly)
+                            ? "true" : "false");
+        switch (m_pEditorRecordingSettings->audioQualityRate())
+        {
+            case 1: optionValues.append("low"); break;
+            case 2: optionValues.append("med"); break;
+            default: optionValues.append("high"); break;
+        }
+        QVector<UIDataSettingsMachineDisplay::RecordingOption> optionKeys;
+        optionKeys.append(UIDataSettingsMachineDisplay::RecordingOption_VC);
+        optionKeys.append(UIDataSettingsMachineDisplay::RecordingOption_AC);
+        optionKeys.append(UIDataSettingsMachineDisplay::RecordingOption_AC_Profile);
+        newDisplayData.m_strRecordingVideoOptions =
+            UIDataSettingsMachineDisplay::setRecordingOptions(m_pCache->base().m_strRecordingVideoOptions,
+                                                              optionKeys, optionValues);
+    }
+
+    /* Cache new data: */
     m_pCache->cacheCurrentData(newDisplayData);
 }
@@ -727,5 +762,5 @@
 void UIMachineSettingsDisplay::polishPage()
 {
-    /* Get old display data from cache: */
+    /* Get old data from cache: */
     const UIDataSettingsMachineDisplay &oldDisplayData = m_pCache->base();
 
@@ -960,4 +995,8 @@
 bool UIMachineSettingsDisplay::saveData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -981,4 +1020,8 @@
 bool UIMachineSettingsDisplay::saveScreenData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -986,7 +1029,7 @@
     if (fSuccess)
     {
-        /* Get old display data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineDisplay &oldDisplayData = m_pCache->base();
-        /* Get new display data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineDisplay &newDisplayData = m_pCache->data();
 
@@ -1050,4 +1093,8 @@
 bool UIMachineSettingsDisplay::saveRemoteDisplayData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -1055,7 +1102,7 @@
     if (fSuccess)
     {
-        /* Get old display data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineDisplay &oldDisplayData = m_pCache->base();
-        /* Get new display data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineDisplay &newDisplayData = m_pCache->data();
 
@@ -1113,4 +1160,8 @@
 bool UIMachineSettingsDisplay::saveRecordingData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -1118,7 +1169,7 @@
     if (fSuccess)
     {
-        /* Get old display data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineDisplay &oldDisplayData = m_pCache->base();
-        /* Get new display data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineDisplay &newDisplayData = m_pCache->data();
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp	(revision 94666)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp	(revision 94667)
@@ -174,9 +174,13 @@
 bool UIMachineSettingsGeneral::changed() const
 {
-    return m_pCache->wasChanged();
+    return m_pCache ? m_pCache->wasChanged() : false;
 }
 
 void UIMachineSettingsGeneral::loadToCacheFrom(QVariant &data)
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return;
+
     /* Fetch data to machine: */
     UISettingsPageMachine::fetchData(data);
@@ -185,5 +189,5 @@
     m_pCache->clear();
 
-    /* Prepare old general data: */
+    /* Prepare old data: */
     UIDataSettingsMachineGeneral oldGeneralData;
 
@@ -236,5 +240,5 @@
     oldGeneralData.m_encryptedMedia = encryptedMedia;
 
-    /* Cache old general data: */
+    /* Cache old data: */
     m_pCache->cacheInitialData(oldGeneralData);
 
@@ -245,31 +249,43 @@
 void UIMachineSettingsGeneral::getFromCache()
 {
-    /* Get old general data from cache: */
+    /* Sanity check: */
+    if (!m_pCache)
+        return;
+
+    /* Get old data from cache: */
     const UIDataSettingsMachineGeneral &oldGeneralData = m_pCache->base();
 
     /* Load old 'Basic' data from cache: */
-    AssertPtrReturnVoid(m_pEditorNameAndSystem);
-    m_pEditorNameAndSystem->setName(oldGeneralData.m_strName);
-    m_pEditorNameAndSystem->setTypeId(oldGeneralData.m_strGuestOsTypeId);
+    if (m_pEditorNameAndSystem)
+    {
+        m_pEditorNameAndSystem->setName(oldGeneralData.m_strName);
+        m_pEditorNameAndSystem->setTypeId(oldGeneralData.m_strGuestOsTypeId);
+    }
 
     /* Load old 'Advanced' data from cache: */
-    AssertPtrReturnVoid(m_pEditorSnapshotFolder);
-    AssertPtrReturnVoid(m_pEditorClipboard);
-    AssertPtrReturnVoid(m_pEditorDragAndDrop);
-    m_pEditorSnapshotFolder->setPath(oldGeneralData.m_strSnapshotsFolder);
-    m_pEditorSnapshotFolder->setInitialPath(oldGeneralData.m_strSnapshotsHomeDir);
-    m_pEditorClipboard->setValue(oldGeneralData.m_clipboardMode);
-    m_pEditorDragAndDrop->setValue(oldGeneralData.m_dndMode);
+    if (m_pEditorSnapshotFolder)
+    {
+        m_pEditorSnapshotFolder->setPath(oldGeneralData.m_strSnapshotsFolder);
+        m_pEditorSnapshotFolder->setInitialPath(oldGeneralData.m_strSnapshotsHomeDir);
+    }
+    if (m_pEditorClipboard)
+        m_pEditorClipboard->setValue(oldGeneralData.m_clipboardMode);
+    if (m_pEditorDragAndDrop)
+        m_pEditorDragAndDrop->setValue(oldGeneralData.m_dndMode);
 
     /* Load old 'Description' data from cache: */
-    AssertPtrReturnVoid(m_pEditorDescription);
-    m_pEditorDescription->setValue(oldGeneralData.m_strDescription);
+    if (m_pEditorDescription)
+        m_pEditorDescription->setValue(oldGeneralData.m_strDescription);
 
     /* Load old 'Encryption' data from cache: */
-    AssertPtrReturnVoid(m_pEditorDiskEncryptionSettings);
-    m_pEditorDiskEncryptionSettings->setFeatureEnabled(oldGeneralData.m_fEncryptionEnabled);
-    m_pEditorDiskEncryptionSettings->setCipherType(oldGeneralData.m_enmEncryptionCipherType);
-    m_fEncryptionCipherChanged = oldGeneralData.m_fEncryptionCipherChanged;
-    m_fEncryptionPasswordChanged = oldGeneralData.m_fEncryptionPasswordChanged;
+    if (m_pEditorDiskEncryptionSettings)
+    {
+        m_pEditorDiskEncryptionSettings->setFeatureEnabled(oldGeneralData.m_fEncryptionEnabled);
+        m_pEditorDiskEncryptionSettings->setCipherType(oldGeneralData.m_enmEncryptionCipherType);
+    }
+    if (m_fEncryptionCipherChanged)
+        m_fEncryptionCipherChanged = oldGeneralData.m_fEncryptionCipherChanged;
+    if (m_fEncryptionPasswordChanged)
+        m_fEncryptionPasswordChanged = oldGeneralData.m_fEncryptionPasswordChanged;
 
     /* Polish page finally: */
@@ -282,57 +298,65 @@
 void UIMachineSettingsGeneral::putToCache()
 {
-    /* Prepare new general data: */
+    /* Sanity check: */
+    if (!m_pCache)
+        return;
+
+    /* Prepare new data: */
     UIDataSettingsMachineGeneral newGeneralData;
 
     /* Gather new 'Basic' data: */
-    AssertPtrReturnVoid(m_pEditorNameAndSystem);
-    newGeneralData.m_strName = m_pEditorNameAndSystem->name();
-    newGeneralData.m_strGuestOsTypeId = m_pEditorNameAndSystem->typeId();
+    if (m_pEditorNameAndSystem)
+    {
+        newGeneralData.m_strName = m_pEditorNameAndSystem->name();
+        newGeneralData.m_strGuestOsTypeId = m_pEditorNameAndSystem->typeId();
+    }
 
     /* Gather new 'Advanced' data: */
-    AssertPtrReturnVoid(m_pEditorSnapshotFolder);
-    AssertPtrReturnVoid(m_pEditorClipboard);
-    AssertPtrReturnVoid(m_pEditorDragAndDrop);
-    newGeneralData.m_strSnapshotsFolder = m_pEditorSnapshotFolder->path();
-    newGeneralData.m_clipboardMode = m_pEditorClipboard->value();
-    newGeneralData.m_dndMode = m_pEditorDragAndDrop->value();
+    if (m_pEditorSnapshotFolder)
+        newGeneralData.m_strSnapshotsFolder = m_pEditorSnapshotFolder->path();
+    if (m_pEditorClipboard)
+        newGeneralData.m_clipboardMode = m_pEditorClipboard->value();
+    if (m_pEditorDragAndDrop)
+        newGeneralData.m_dndMode = m_pEditorDragAndDrop->value();
 
     /* Gather new 'Description' data: */
-    AssertPtrReturnVoid(m_pEditorDescription);
-    newGeneralData.m_strDescription = m_pEditorDescription->value().isEmpty() ?
-                                      QString() : m_pEditorDescription->value();
+    if (m_pEditorDescription)
+        newGeneralData.m_strDescription = m_pEditorDescription->value().isEmpty()
+                                 ? QString() : m_pEditorDescription->value();
 
     /* Gather new 'Encryption' data: */
-    AssertPtrReturnVoid(m_pEditorDiskEncryptionSettings);
-    newGeneralData.m_fEncryptionEnabled = m_pEditorDiskEncryptionSettings->isFeatureEnabled();
-    newGeneralData.m_fEncryptionCipherChanged = m_fEncryptionCipherChanged;
-    newGeneralData.m_fEncryptionPasswordChanged = m_fEncryptionPasswordChanged;
-    newGeneralData.m_enmEncryptionCipherType = m_pEditorDiskEncryptionSettings->cipherType();
-    newGeneralData.m_strEncryptionPassword = m_pEditorDiskEncryptionSettings->password1();
-    newGeneralData.m_encryptedMedia = m_pCache->base().m_encryptedMedia;
-    /* If encryption status, cipher or password is changed: */
-    if (newGeneralData.m_fEncryptionEnabled != m_pCache->base().m_fEncryptionEnabled ||
-        newGeneralData.m_fEncryptionCipherChanged != m_pCache->base().m_fEncryptionCipherChanged ||
-        newGeneralData.m_fEncryptionPasswordChanged != m_pCache->base().m_fEncryptionPasswordChanged)
-    {
-        /* Ask for the disk encryption passwords if necessary: */
-        if (!m_pCache->base().m_encryptedMedia.isEmpty())
-        {
-            /* Create corresponding dialog: */
-            QWidget *pDlgParent = windowManager().realParentWindow(window());
-            QPointer<UIAddDiskEncryptionPasswordDialog> pDlg =
-                 new UIAddDiskEncryptionPasswordDialog(pDlgParent,
-                                                       newGeneralData.m_strName,
-                                                       newGeneralData.m_encryptedMedia);
-            /* Execute it and acquire the result: */
-            if (pDlg->exec() == QDialog::Accepted)
-                newGeneralData.m_encryptionPasswords = pDlg->encryptionPasswords();
-            /* Delete dialog if still valid: */
-            if (pDlg)
-                delete pDlg;
-        }
-    }
-
-    /* Cache new general data: */
+    if (m_pEditorDiskEncryptionSettings)
+    {
+        newGeneralData.m_fEncryptionEnabled = m_pEditorDiskEncryptionSettings->isFeatureEnabled();
+        newGeneralData.m_fEncryptionCipherChanged = m_fEncryptionCipherChanged;
+        newGeneralData.m_fEncryptionPasswordChanged = m_fEncryptionPasswordChanged;
+        newGeneralData.m_enmEncryptionCipherType = m_pEditorDiskEncryptionSettings->cipherType();
+        newGeneralData.m_strEncryptionPassword = m_pEditorDiskEncryptionSettings->password1();
+        newGeneralData.m_encryptedMedia = m_pCache->base().m_encryptedMedia;
+        /* If encryption status, cipher or password is changed: */
+        if (newGeneralData.m_fEncryptionEnabled != m_pCache->base().m_fEncryptionEnabled ||
+            newGeneralData.m_fEncryptionCipherChanged != m_pCache->base().m_fEncryptionCipherChanged ||
+            newGeneralData.m_fEncryptionPasswordChanged != m_pCache->base().m_fEncryptionPasswordChanged)
+        {
+            /* Ask for the disk encryption passwords if necessary: */
+            if (!m_pCache->base().m_encryptedMedia.isEmpty())
+            {
+                /* Create corresponding dialog: */
+                QWidget *pDlgParent = windowManager().realParentWindow(window());
+                QPointer<UIAddDiskEncryptionPasswordDialog> pDlg =
+                     new UIAddDiskEncryptionPasswordDialog(pDlgParent,
+                                                           newGeneralData.m_strName,
+                                                           newGeneralData.m_encryptedMedia);
+                /* Execute it and acquire the result: */
+                if (pDlg->exec() == QDialog::Accepted)
+                    newGeneralData.m_encryptionPasswords = pDlg->encryptionPasswords();
+                /* Delete dialog if still valid: */
+                if (pDlg)
+                    delete pDlg;
+            }
+        }
+    }
+
+    /* Cache new data: */
     m_pCache->cacheCurrentData(newGeneralData);
 }
@@ -670,4 +694,8 @@
 bool UIMachineSettingsGeneral::saveData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -694,4 +722,8 @@
 bool UIMachineSettingsGeneral::saveBasicData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -699,7 +731,7 @@
     if (fSuccess)
     {
-        /* Get old general data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineGeneral &oldGeneralData = m_pCache->base();
-        /* Get new general data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineGeneral &newGeneralData = m_pCache->data();
 
@@ -733,4 +765,8 @@
 bool UIMachineSettingsGeneral::saveAdvancedData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -738,7 +774,7 @@
     if (fSuccess)
     {
-        /* Get old general data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineGeneral &oldGeneralData = m_pCache->base();
-        /* Get new general data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineGeneral &newGeneralData = m_pCache->data();
 
@@ -780,4 +816,8 @@
 bool UIMachineSettingsGeneral::saveDescriptionData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -785,7 +825,7 @@
     if (fSuccess)
     {
-        /* Get old general data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineGeneral &oldGeneralData = m_pCache->base();
-        /* Get new general data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineGeneral &newGeneralData = m_pCache->data();
 
@@ -807,4 +847,8 @@
 bool UIMachineSettingsGeneral::saveEncryptionData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -812,7 +856,7 @@
     if (fSuccess)
     {
-        /* Get old general data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineGeneral &oldGeneralData = m_pCache->base();
-        /* Get new general data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineGeneral &newGeneralData = m_pCache->data();
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsInterface.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsInterface.cpp	(revision 94666)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsInterface.cpp	(revision 94667)
@@ -158,9 +158,13 @@
 bool UIMachineSettingsInterface::changed() const
 {
-    return m_pCache->wasChanged();
+    return m_pCache ? m_pCache->wasChanged() : false;
 }
 
 void UIMachineSettingsInterface::loadToCacheFrom(QVariant &data)
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return;
+
     /* Fetch data to machine: */
     UISettingsPageMachine::fetchData(data);
@@ -169,8 +173,8 @@
     m_pCache->clear();
 
-    /* Prepare old interface data: */
+    /* Prepare old data: */
     UIDataSettingsMachineInterface oldInterfaceData;
 
-    /* Gather old interface data: */
+    /* Gather old data: */
     oldInterfaceData.m_fStatusBarEnabled = gEDataManager->statusBarEnabled(m_machine.GetId());
     oldInterfaceData.m_statusBarRestrictions = gEDataManager->restrictedStatusBarIndicators(m_machine.GetId());
@@ -198,5 +202,5 @@
     oldInterfaceData.m_enmVisualState = gEDataManager->requestedVisualState(m_machine.GetId());
 
-    /* Cache old interface data: */
+    /* Cache old data: */
     m_pCache->cacheInitialData(oldInterfaceData);
 
@@ -207,33 +211,49 @@
 void UIMachineSettingsInterface::getFromCache()
 {
-    /* Get old interface data from cache: */
+    /* Sanity check: */
+    if (!m_pCache)
+        return;
+
+    /* Get old data from cache: */
     const UIDataSettingsMachineInterface &oldInterfaceData = m_pCache->base();
 
-    /* Load old interface data from cache: */
-    m_pEditorStatusBar->setStatusBarEnabled(oldInterfaceData.m_fStatusBarEnabled);
-    m_pEditorStatusBar->setStatusBarConfiguration(oldInterfaceData.m_statusBarRestrictions,
-                                                  oldInterfaceData.m_statusBarOrder);
-#ifndef VBOX_WS_MAC
-    m_pEditorMenuBar->setMenuBarEnabled(oldInterfaceData.m_fMenuBarEnabled);
-#endif
-    m_pEditorMenuBar->setRestrictionsOfMenuBar(oldInterfaceData.m_restrictionsOfMenuBar);
-    m_pEditorMenuBar->setRestrictionsOfMenuApplication(oldInterfaceData.m_restrictionsOfMenuApplication);
-    m_pEditorMenuBar->setRestrictionsOfMenuMachine(oldInterfaceData.m_restrictionsOfMenuMachine);
-    m_pEditorMenuBar->setRestrictionsOfMenuView(oldInterfaceData.m_restrictionsOfMenuView);
-    m_pEditorMenuBar->setRestrictionsOfMenuInput(oldInterfaceData.m_restrictionsOfMenuInput);
-    m_pEditorMenuBar->setRestrictionsOfMenuDevices(oldInterfaceData.m_restrictionsOfMenuDevices);
-#ifdef VBOX_WITH_DEBUGGER_GUI
-    m_pEditorMenuBar->setRestrictionsOfMenuDebug(oldInterfaceData.m_restrictionsOfMenuDebug);
-#endif
-#ifdef VBOX_WS_MAC
-    m_pEditorMenuBar->setRestrictionsOfMenuWindow(oldInterfaceData.m_restrictionsOfMenuWindow);
-#endif
-    m_pEditorMenuBar->setRestrictionsOfMenuHelp(oldInterfaceData.m_restrictionsOfMenuHelp);
-#ifndef VBOX_WS_MAC
-    m_pEditorMiniToolabSettings->setShowMiniToolbar(oldInterfaceData.m_fShowMiniToolbar);
-    m_pEditorMiniToolabSettings->setMiniToolbarAtTop(oldInterfaceData.m_fMiniToolbarAtTop);
-#endif
-    m_pEditorVisualState->setMachineId(m_machine.GetId());
-    m_pEditorVisualState->setValue(oldInterfaceData.m_enmVisualState);
+    /* Load old data from cache: */
+    if (m_pEditorStatusBar)
+    {
+        m_pEditorStatusBar->setStatusBarEnabled(oldInterfaceData.m_fStatusBarEnabled);
+        m_pEditorStatusBar->setStatusBarConfiguration(oldInterfaceData.m_statusBarRestrictions,
+                                                      oldInterfaceData.m_statusBarOrder);
+    }
+    if (m_pEditorMenuBar)
+    {
+#ifndef VBOX_WS_MAC
+        m_pEditorMenuBar->setMenuBarEnabled(oldInterfaceData.m_fMenuBarEnabled);
+#endif
+        m_pEditorMenuBar->setRestrictionsOfMenuBar(oldInterfaceData.m_restrictionsOfMenuBar);
+        m_pEditorMenuBar->setRestrictionsOfMenuApplication(oldInterfaceData.m_restrictionsOfMenuApplication);
+        m_pEditorMenuBar->setRestrictionsOfMenuMachine(oldInterfaceData.m_restrictionsOfMenuMachine);
+        m_pEditorMenuBar->setRestrictionsOfMenuView(oldInterfaceData.m_restrictionsOfMenuView);
+        m_pEditorMenuBar->setRestrictionsOfMenuInput(oldInterfaceData.m_restrictionsOfMenuInput);
+        m_pEditorMenuBar->setRestrictionsOfMenuDevices(oldInterfaceData.m_restrictionsOfMenuDevices);
+#ifdef VBOX_WITH_DEBUGGER_GUI
+        m_pEditorMenuBar->setRestrictionsOfMenuDebug(oldInterfaceData.m_restrictionsOfMenuDebug);
+#endif
+#ifdef VBOX_WS_MAC
+        m_pEditorMenuBar->setRestrictionsOfMenuWindow(oldInterfaceData.m_restrictionsOfMenuWindow);
+#endif
+        m_pEditorMenuBar->setRestrictionsOfMenuHelp(oldInterfaceData.m_restrictionsOfMenuHelp);
+    }
+#ifndef VBOX_WS_MAC
+    if (m_pEditorMiniToolabSettings)
+    {
+        m_pEditorMiniToolabSettings->setShowMiniToolbar(oldInterfaceData.m_fShowMiniToolbar);
+        m_pEditorMiniToolabSettings->setMiniToolbarAtTop(oldInterfaceData.m_fMiniToolbarAtTop);
+    }
+#endif
+    if (m_pEditorVisualState)
+    {
+        m_pEditorVisualState->setMachineId(m_machine.GetId());
+        m_pEditorVisualState->setValue(oldInterfaceData.m_enmVisualState);
+    }
 
     /* Polish page finally: */
@@ -246,34 +266,46 @@
 void UIMachineSettingsInterface::putToCache()
 {
-    /* Prepare new interface data: */
+    /* Sanity check: */
+    if (!m_pCache)
+        return;
+
+    /* Prepare new data: */
     UIDataSettingsMachineInterface newInterfaceData;
 
-    /* Gather new interface data: */
-    newInterfaceData.m_fStatusBarEnabled = m_pEditorStatusBar->isStatusBarEnabled();
-    newInterfaceData.m_statusBarRestrictions = m_pEditorStatusBar->statusBarIndicatorRestrictions();
-    newInterfaceData.m_statusBarOrder = m_pEditorStatusBar->statusBarIndicatorOrder();
-#ifndef VBOX_WS_MAC
-    newInterfaceData.m_fMenuBarEnabled = m_pEditorMenuBar->isMenuBarEnabled();
-#endif
-    newInterfaceData.m_restrictionsOfMenuBar = m_pEditorMenuBar->restrictionsOfMenuBar();
-    newInterfaceData.m_restrictionsOfMenuApplication = m_pEditorMenuBar->restrictionsOfMenuApplication();
-    newInterfaceData.m_restrictionsOfMenuMachine = m_pEditorMenuBar->restrictionsOfMenuMachine();
-    newInterfaceData.m_restrictionsOfMenuView = m_pEditorMenuBar->restrictionsOfMenuView();
-    newInterfaceData.m_restrictionsOfMenuInput = m_pEditorMenuBar->restrictionsOfMenuInput();
-    newInterfaceData.m_restrictionsOfMenuDevices = m_pEditorMenuBar->restrictionsOfMenuDevices();
-#ifdef VBOX_WITH_DEBUGGER_GUI
-    newInterfaceData.m_restrictionsOfMenuDebug = m_pEditorMenuBar->restrictionsOfMenuDebug();
-#endif
-#ifdef VBOX_WS_MAC
-    newInterfaceData.m_restrictionsOfMenuWindow = m_pEditorMenuBar->restrictionsOfMenuWindow();
-#endif
-    newInterfaceData.m_restrictionsOfMenuHelp = m_pEditorMenuBar->restrictionsOfMenuHelp();
-#ifndef VBOX_WS_MAC
-    newInterfaceData.m_fShowMiniToolbar = m_pEditorMiniToolabSettings->showMiniToolbar();
-    newInterfaceData.m_fMiniToolbarAtTop = m_pEditorMiniToolabSettings->miniToolbarAtTop();
-#endif
-    newInterfaceData.m_enmVisualState = m_pEditorVisualState->value();
-
-    /* Cache new interface data: */
+    /* Cache new data: */
+    if (m_pEditorStatusBar)
+    {
+        newInterfaceData.m_fStatusBarEnabled = m_pEditorStatusBar->isStatusBarEnabled();
+        newInterfaceData.m_statusBarRestrictions = m_pEditorStatusBar->statusBarIndicatorRestrictions();
+        newInterfaceData.m_statusBarOrder = m_pEditorStatusBar->statusBarIndicatorOrder();
+    }
+    if (m_pEditorMenuBar)
+    {
+#ifndef VBOX_WS_MAC
+        newInterfaceData.m_fMenuBarEnabled = m_pEditorMenuBar->isMenuBarEnabled();
+#endif
+        newInterfaceData.m_restrictionsOfMenuBar = m_pEditorMenuBar->restrictionsOfMenuBar();
+        newInterfaceData.m_restrictionsOfMenuApplication = m_pEditorMenuBar->restrictionsOfMenuApplication();
+        newInterfaceData.m_restrictionsOfMenuMachine = m_pEditorMenuBar->restrictionsOfMenuMachine();
+        newInterfaceData.m_restrictionsOfMenuView = m_pEditorMenuBar->restrictionsOfMenuView();
+        newInterfaceData.m_restrictionsOfMenuInput = m_pEditorMenuBar->restrictionsOfMenuInput();
+        newInterfaceData.m_restrictionsOfMenuDevices = m_pEditorMenuBar->restrictionsOfMenuDevices();
+#ifdef VBOX_WITH_DEBUGGER_GUI
+        newInterfaceData.m_restrictionsOfMenuDebug = m_pEditorMenuBar->restrictionsOfMenuDebug();
+#endif
+#ifdef VBOX_WS_MAC
+        newInterfaceData.m_restrictionsOfMenuWindow = m_pEditorMenuBar->restrictionsOfMenuWindow();
+#endif
+        newInterfaceData.m_restrictionsOfMenuHelp = m_pEditorMenuBar->restrictionsOfMenuHelp();
+    }
+#ifndef VBOX_WS_MAC
+    if (m_pEditorMiniToolabSettings)
+    {
+        newInterfaceData.m_fShowMiniToolbar = m_pEditorMiniToolabSettings->showMiniToolbar();
+        newInterfaceData.m_fMiniToolbarAtTop = m_pEditorMiniToolabSettings->miniToolbarAtTop();
+    }
+#endif
+    if (m_pEditorVisualState)
+        newInterfaceData.m_enmVisualState = m_pEditorVisualState->value();
     m_pCache->cacheCurrentData(newInterfaceData);
 }
@@ -384,4 +416,8 @@
 bool UIMachineSettingsInterface::saveData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -408,4 +444,8 @@
 bool UIMachineSettingsInterface::saveMenuBarData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -413,7 +453,7 @@
     if (fSuccess)
     {
-        /* Get old interface data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineInterface &oldInterfaceData = m_pCache->base();
-        /* Get new interface data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineInterface &newInterfaceData = m_pCache->data();
 
@@ -461,4 +501,8 @@
 bool UIMachineSettingsInterface::saveStatusBarData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -466,7 +510,7 @@
     if (fSuccess)
     {
-        /* Get old interface data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineInterface &oldInterfaceData = m_pCache->base();
-        /* Get new interface data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineInterface &newInterfaceData = m_pCache->data();
 
@@ -487,4 +531,8 @@
 bool UIMachineSettingsInterface::saveMiniToolbarData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -492,7 +540,7 @@
     if (fSuccess)
     {
-        /* Get old interface data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineInterface &oldInterfaceData = m_pCache->base(); Q_UNUSED(oldInterfaceData);
-        /* Get new interface data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineInterface &newInterfaceData = m_pCache->data(); Q_UNUSED(newInterfaceData);
 
@@ -512,4 +560,8 @@
 bool UIMachineSettingsInterface::saveVisualStateData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -517,7 +569,7 @@
     if (fSuccess)
     {
-        /* Get old interface data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineInterface &oldInterfaceData = m_pCache->base();
-        /* Get new interface data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineInterface &newInterfaceData = m_pCache->data();
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp	(revision 94666)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp	(revision 94667)
@@ -238,5 +238,5 @@
 void UIMachineSettingsNetwork::getAdapterDataFromCache(const UISettingsCacheMachineNetworkAdapter &adapterCache)
 {
-    /* Get old adapter data: */
+    /* Get old data: */
     const UIDataSettingsMachineNetworkAdapter &oldAdapterData = adapterCache.base();
 
@@ -284,5 +284,5 @@
 void UIMachineSettingsNetwork::putAdapterDataToCache(UISettingsCacheMachineNetworkAdapter &adapterCache)
 {
-    /* Prepare new adapter data: */
+    /* Prepare new data: */
     UIDataSettingsMachineNetworkAdapter newAdapterData;
 
@@ -342,5 +342,5 @@
     }
 
-    /* Cache new adapter data: */
+    /* Cache new data: */
     adapterCache.cacheCurrentData(newAdapterData);
 }
@@ -661,5 +661,5 @@
 #endif
 
-    /* Prepare old network data: */
+    /* Prepare old data: */
     UIDataSettingsMachineNetwork oldNetworkData;
 
@@ -667,5 +667,5 @@
     for (int iSlot = 0; iSlot < m_pTabWidget->count(); ++iSlot)
     {
-        /* Prepare old adapter data: */
+        /* Prepare old data: */
         UIDataSettingsMachineNetworkAdapter oldAdapterData;
 
@@ -674,5 +674,5 @@
         if (!comAdapter.isNull())
         {
-            /* Gather old adapter data: */
+            /* Gather old data: */
             oldAdapterData.m_iSlot = iSlot;
             oldAdapterData.m_fAdapterEnabled = comAdapter.GetEnabled();
@@ -696,5 +696,5 @@
             foreach (const QString &strRedirect, comAdapter.GetNATEngine().GetRedirects())
             {
-                /* Gather old forwarding data & cache key: */
+                /* Gather old data & cache key: */
                 const QStringList &forwardingData = strRedirect.split(',');
                 AssertMsg(forwardingData.size() == 6, ("Redirect rule should be composed of 6 parts!\n"));
@@ -706,14 +706,14 @@
                                                                  forwardingData.at(5).toUInt());
                 const QString &strForwardingKey = forwardingData.at(0);
-                /* Cache old forwarding data: */
+                /* Cache old data: */
                 m_pCache->child(iSlot).child(strForwardingKey).cacheInitialData(oldForwardingData);
             }
         }
 
-        /* Cache old adapter data: */
+        /* Cache old data: */
         m_pCache->child(iSlot).cacheInitialData(oldAdapterData);
     }
 
-    /* Cache old network data: */
+    /* Cache old data: */
     m_pCache->cacheInitialData(oldNetworkData);
 
@@ -741,5 +741,5 @@
         AssertPtrReturnVoid(pTab);
 
-        /* Load old adapter data from cache: */
+        /* Load old data from cache: */
         pTab->getAdapterDataFromCache(m_pCache->child(iSlot));
 
@@ -765,5 +765,5 @@
         return;
 
-    /* Prepare new network data: */
+    /* Prepare new data: */
     UIDataSettingsMachineNetwork newNetworkData;
 
@@ -775,9 +775,9 @@
         AssertPtrReturnVoid(pTab);
 
-        /* Gather new adapter data: */
+        /* Gather new data: */
         pTab->putAdapterDataToCache(m_pCache->child(iSlot));
     }
 
-    /* Cache new network data: */
+    /* Cache new data: */
     m_pCache->cacheCurrentData(newNetworkData);
 }
@@ -1137,7 +1137,7 @@
     if (fSuccess && m_pCache->child(iSlot).wasChanged())
     {
-        /* Get old network data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineNetworkAdapter &oldAdapterData = m_pCache->child(iSlot).base();
-        /* Get new network data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineNetworkAdapter &newAdapterData = m_pCache->child(iSlot).data();
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSF.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSF.cpp	(revision 94666)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSF.cpp	(revision 94667)
@@ -320,9 +320,13 @@
 bool UIMachineSettingsSF::changed() const
 {
-    return m_pCache->wasChanged();
+    return m_pCache ? m_pCache->wasChanged() : false;
 }
 
 void UIMachineSettingsSF::loadToCacheFrom(QVariant &data)
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return;
+
     /* Fetch data to machine: */
     UISettingsPageMachine::fetchData(data);
@@ -331,5 +335,5 @@
     m_pCache->clear();
 
-    /* Prepare old folders data: */
+    /* Prepare old data: */
     UIDataSettingsSharedFolders oldFoldersData;
 
@@ -356,5 +360,5 @@
         for (int iFolderIndex = 0; iFolderIndex < currentTypeFolders.size(); ++iFolderIndex)
         {
-            /* Prepare old folder data & cache key: */
+            /* Prepare old data & cache key: */
             UIDataSettingsSharedFolder oldFolderData;
             QString strFolderKey = QString::number(iFolderIndex);
@@ -364,5 +368,5 @@
             if (!comFolder.isNull())
             {
-                /* Gather old folder data: */
+                /* Gather old data: */
                 oldFolderData.m_enmType = enmFolderType;
                 oldFolderData.m_strName = comFolder.GetName();
@@ -375,10 +379,10 @@
             }
 
-            /* Cache old folder data: */
+            /* Cache old data: */
             m_pCache->child(strFolderKey).cacheInitialData(oldFolderData);
         }
     }
 
-    /* Cache old folders data: */
+    /* Cache old data: */
     m_pCache->cacheInitialData(oldFoldersData);
 
@@ -389,4 +393,9 @@
 void UIMachineSettingsSF::getFromCache()
 {
+    /* Sanity check: */
+    if (   !m_pCache
+        || !m_pTreeWidget)
+        return;
+
     /* Clear list initially: */
     m_pTreeWidget->clear();
@@ -409,5 +418,10 @@
 void UIMachineSettingsSF::putToCache()
 {
-    /* Prepare new folders data: */
+    /* Sanity check: */
+    if (   !m_pCache
+        || !m_pTreeWidget)
+        return;
+
+    /* Prepare new data: */
     UIDataSettingsSharedFolders newFoldersData;
 
@@ -422,5 +436,5 @@
         for (int iFolderIndex = 0; iFolderIndex < pFolderTypeRoot->childCount(); ++iFolderIndex)
         {
-            /* Gather and cache new folder data: */
+            /* Gather and cache new data: */
             const SFTreeViewItem *pItem = static_cast<SFTreeViewItem*>(pFolderTypeRoot->child(iFolderIndex));
             m_pCache->child(pItem->m_strName).cacheCurrentData(*pItem);
@@ -428,5 +442,5 @@
     }
 
-    /* Cache new folders data: */
+    /* Cache new data: */
     m_pCache->cacheCurrentData(newFoldersData);
 }
@@ -515,5 +529,5 @@
         Assert(!strName.isEmpty() && !strPath.isEmpty());
 
-        /* Prepare new folder data: */
+        /* Prepare new data: */
         UIDataSettingsSharedFolder newFolderData;
         newFolderData.m_enmType = enmType;
@@ -1029,4 +1043,8 @@
 bool UIMachineSettingsSF::saveData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.cpp	(revision 94666)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.cpp	(revision 94667)
@@ -571,9 +571,14 @@
 bool UIMachineSettingsSerialPage::changed() const
 {
-    return m_pCache->wasChanged();
+    return m_pCache ? m_pCache->wasChanged() : false;
 }
 
 void UIMachineSettingsSerialPage::loadToCacheFrom(QVariant &data)
 {
+    /* Sanity check: */
+    if (   !m_pCache
+        || !m_pTabWidget)
+        return;
+
     /* Fetch data to machine: */
     UISettingsPageMachine::fetchData(data);
@@ -582,5 +587,5 @@
     m_pCache->clear();
 
-    /* Prepare old serial data: */
+    /* Prepare old data: */
     UIDataSettingsMachineSerial oldSerialData;
 
@@ -588,5 +593,5 @@
     for (int iSlot = 0; iSlot < m_pTabWidget->count(); ++iSlot)
     {
-        /* Prepare old port data: */
+        /* Prepare old data: */
         UIDataSettingsMachineSerialPort oldPortData;
 
@@ -595,5 +600,5 @@
         if (!comPort.isNull())
         {
-            /* Gather old port data: */
+            /* Gather old data: */
             oldPortData.m_iSlot = iSlot;
             oldPortData.m_fPortEnabled = comPort.GetEnabled();
@@ -605,9 +610,9 @@
         }
 
-        /* Cache old port data: */
+        /* Cache old data: */
         m_pCache->child(iSlot).cacheInitialData(oldPortData);
     }
 
-    /* Cache old serial data: */
+    /* Cache old data: */
     m_pCache->cacheInitialData(oldSerialData);
 
@@ -618,4 +623,9 @@
 void UIMachineSettingsSerialPage::getFromCache()
 {
+    /* Sanity check: */
+    if (   !m_pCache
+        || !m_pTabWidget)
+        return;
+
     /* Setup tab order: */
     AssertPtrReturnVoid(firstWidget());
@@ -627,11 +637,12 @@
     {
         /* Get port page: */
-        UIMachineSettingsSerial *pPage = qobject_cast<UIMachineSettingsSerial*>(m_pTabWidget->widget(iSlot));
-
-        /* Load old port data from cache: */
-        pPage->loadPortData(m_pCache->child(iSlot).base());
+        UIMachineSettingsSerial *pTab = qobject_cast<UIMachineSettingsSerial*>(m_pTabWidget->widget(iSlot));
+        AssertPtrReturnVoid(pTab);
+
+        /* Load old data from cache: */
+        pTab->loadPortData(m_pCache->child(iSlot).base());
 
         /* Setup tab order: */
-        pLastFocusWidget = pPage->setOrderAfter(pLastFocusWidget);
+        pLastFocusWidget = pTab->setOrderAfter(pLastFocusWidget);
     }
 
@@ -648,5 +659,10 @@
 void UIMachineSettingsSerialPage::putToCache()
 {
-    /* Prepare new serial data: */
+    /* Sanity check: */
+    if (   !m_pCache
+        || !m_pTabWidget)
+        return;
+
+    /* Prepare new data: */
     UIDataSettingsMachineSerial newSerialData;
 
@@ -656,16 +672,17 @@
         /* Getting port page: */
         UIMachineSettingsSerial *pTab = qobject_cast<UIMachineSettingsSerial*>(m_pTabWidget->widget(iSlot));
-
-        /* Prepare new port data: */
+        AssertPtrReturnVoid(pTab);
+
+        /* Prepare new data: */
         UIDataSettingsMachineSerialPort newPortData;
 
-        /* Gather new port data: */
+        /* Gather new data: */
         pTab->savePortData(newPortData);
 
-        /* Cache new port data: */
+        /* Cache new data: */
         m_pCache->child(iSlot).cacheCurrentData(newPortData);
     }
 
-    /* Cache new serial data: */
+    /* Cache new data: */
     m_pCache->cacheCurrentData(newSerialData);
 }
@@ -777,4 +794,5 @@
                                      m_pCache->child(iSlot).base().m_fPortEnabled));
         UIMachineSettingsSerial *pTab = qobject_cast<UIMachineSettingsSerial*>(m_pTabWidget->widget(iSlot));
+        AssertPtrReturnVoid(pTab);
         pTab->polishTab();
     }
@@ -825,4 +843,9 @@
 bool UIMachineSettingsSerialPage::saveData()
 {
+    /* Sanity check: */
+    if (   !m_pCache
+        || !m_pTabWidget)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -840,4 +863,8 @@
 bool UIMachineSettingsSerialPage::savePortData(int iSlot)
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -845,7 +872,7 @@
     if (fSuccess && m_pCache->child(iSlot).wasChanged())
     {
-        /* Get old serial data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineSerialPort &oldPortData = m_pCache->child(iSlot).base();
-        /* Get new serial data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineSerialPort &newPortData = m_pCache->child(iSlot).data();
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp	(revision 94666)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp	(revision 94667)
@@ -3032,9 +3032,13 @@
 bool UIMachineSettingsStorage::changed() const
 {
-    return m_pCache->wasChanged();
+    return m_pCache ? m_pCache->wasChanged() : false;
 }
 
 void UIMachineSettingsStorage::loadToCacheFrom(QVariant &data)
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return;
+
     /* Fetch data to machine: */
     UISettingsPageMachine::fetchData(data);
@@ -3043,8 +3047,8 @@
     m_pCache->clear();
 
-    /* Prepare old storage data: */
+    /* Prepare old data: */
     UIDataSettingsMachineStorage oldStorageData;
 
-    /* Gather old common data: */
+    /* Gather old data: */
     m_uMachineId = m_machine.GetId();
     m_strMachineSettingsFilePath = m_machine.GetSettingsFilePath();
@@ -3056,5 +3060,5 @@
     for (int iControllerIndex = 0; iControllerIndex < controllers.size(); ++iControllerIndex)
     {
-        /* Prepare old controller data & cache key: */
+        /* Prepare old data & cache key: */
         UIDataSettingsMachineStorageController oldControllerData;
         QString strControllerKey = QString::number(iControllerIndex);
@@ -3064,5 +3068,5 @@
         if (!comController.isNull())
         {
-            /* Gather old controller data: */
+            /* Gather old data: */
             oldControllerData.m_strName = comController.GetName();
             oldControllerData.m_enmBus = comController.GetBus();
@@ -3088,5 +3092,5 @@
             for (int iAttachmentIndex = 0; iAttachmentIndex < attachments.size(); ++iAttachmentIndex)
             {
-                /* Prepare old attachment data & cache key: */
+                /* Prepare old data & cache key: */
                 UIDataSettingsMachineStorageAttachment oldAttachmentData;
                 QString strAttachmentKey = QString::number(iAttachmentIndex);
@@ -3096,5 +3100,5 @@
                 if (!comAttachment.isNull())
                 {
-                    /* Gather old attachment data: */
+                    /* Gather old data: */
                     oldAttachmentData.m_enmDeviceType = comAttachment.GetType();
                     oldAttachmentData.m_iPort = comAttachment.GetPort();
@@ -3110,14 +3114,14 @@
                 }
 
-                /* Cache old attachment data: */
+                /* Cache old data: */
                 m_pCache->child(strControllerKey).child(strAttachmentKey).cacheInitialData(oldAttachmentData);
             }
         }
 
-        /* Cache old controller data: */
+        /* Cache old data: */
         m_pCache->child(strControllerKey).cacheInitialData(oldControllerData);
     }
 
-    /* Cache old storage data: */
+    /* Cache old data: */
     m_pCache->cacheInitialData(oldStorageData);
 
@@ -3128,8 +3132,14 @@
 void UIMachineSettingsStorage::getFromCache()
 {
+    /* Sanity check: */
+    if (   !m_pCache
+        || !m_pModelStorage
+        || !m_pTreeViewStorage)
+        return;
+
     /* Clear model initially: */
     m_pModelStorage->clear();
 
-    /* Load old common data from cache: */
+    /* Load old data from cache: */
     m_pModelStorage->setMachineId(m_uMachineId);
 
@@ -3139,8 +3149,8 @@
         /* Get controller cache: */
         const UISettingsCacheMachineStorageController &controllerCache = m_pCache->child(iControllerIndex);
-        /* Get old controller data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineStorageController &oldControllerData = controllerCache.base();
 
-        /* Load old controller data from cache: */
+        /* Load old data from cache: */
         const QModelIndex controllerIndex = m_pModelStorage->addController(oldControllerData.m_strName,
                                                                            oldControllerData.m_enmBus,
@@ -3155,8 +3165,8 @@
             /* Get attachment cache: */
             const UISettingsCacheMachineStorageAttachment &attachmentCache = controllerCache.child(iAttachmentIndex);
-            /* Get old attachment data from cache: */
+            /* Get old data from cache: */
             const UIDataSettingsMachineStorageAttachment &oldAttachmentData = attachmentCache.base();
 
-            /* Load old attachment data from cache: */
+            /* Load old data from cache: */
             const QModelIndex attachmentIndex = m_pModelStorage->addAttachment(controllerId,
                                                                                oldAttachmentData.m_enmDeviceType,
@@ -3189,5 +3199,10 @@
 void UIMachineSettingsStorage::putToCache()
 {
-    /* Prepare new storage data: */
+    /* Sanity check: */
+    if (   !m_pCache
+        || !m_pModelStorage)
+        return;
+
+    /* Prepare new data: */
     UIDataSettingsMachineStorage newStorageData;
 
@@ -3196,8 +3211,8 @@
     for (int iControllerIndex = 0; iControllerIndex < m_pModelStorage->rowCount(rootIndex); ++iControllerIndex)
     {
-        /* Prepare new controller data & key: */
+        /* Prepare new data & key: */
         UIDataSettingsMachineStorageController newControllerData;
 
-        /* Gather new controller data & cache key from model: */
+        /* Gather new data & cache key from model: */
         const QModelIndex controllerIndex = m_pModelStorage->index(iControllerIndex, 0, rootIndex);
         newControllerData.m_strName = m_pModelStorage->data(controllerIndex, StorageModel::R_CtrName).toString();
@@ -3211,8 +3226,8 @@
         for (int iAttachmentIndex = 0; iAttachmentIndex < m_pModelStorage->rowCount(controllerIndex); ++iAttachmentIndex)
         {
-            /* Prepare new attachment data & key: */
+            /* Prepare new data & key: */
             UIDataSettingsMachineStorageAttachment newAttachmentData;
 
-            /* Gather new attachment data & cache key from model: */
+            /* Gather new data & cache key from model: */
             const QModelIndex attachmentIndex = m_pModelStorage->index(iAttachmentIndex, 0, controllerIndex);
             newAttachmentData.m_enmDeviceType = m_pModelStorage->data(attachmentIndex, StorageModel::R_AttDevice).value<KDeviceType>();
@@ -3227,13 +3242,13 @@
             const QString strAttachmentKey = QString("%1:%2").arg(newAttachmentData.m_iPort).arg(newAttachmentData.m_iDevice);
 
-            /* Cache new attachment data: */
+            /* Cache new data: */
             m_pCache->child(strControllerKey).child(strAttachmentKey).cacheCurrentData(newAttachmentData);
         }
 
-        /* Cache new controller data: */
+        /* Cache new data: */
         m_pCache->child(strControllerKey).cacheCurrentData(newControllerData);
     }
 
-    /* Cache new storage data: */
+    /* Cache new data: */
     m_pCache->cacheCurrentData(newStorageData);
 }
@@ -5381,4 +5396,8 @@
 bool UIMachineSettingsStorage::saveData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -5445,5 +5464,5 @@
     if (fSuccess && isMachineOffline())
     {
-        /* Get old controller data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineStorageController &oldControllerData = controllerCache.base();
 
@@ -5475,5 +5494,5 @@
     if (fSuccess && isMachineOffline())
     {
-        /* Get new controller data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineStorageController &newControllerData = controllerCache.data();
 
@@ -5562,7 +5581,7 @@
     if (fSuccess)
     {
-        /* Get old controller data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineStorageController &oldControllerData = controllerCache.base();
-        /* Get new controller data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineStorageController &newControllerData = controllerCache.data();
 
@@ -5666,7 +5685,7 @@
     if (fSuccess)
     {
-        /* Get old controller data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineStorageController &oldControllerData = controllerCache.base();
-        /* Get old attachment data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineStorageAttachment &oldAttachmentData = attachmentCache.base();
 
@@ -5703,7 +5722,7 @@
     if (fSuccess)
     {
-        /* Get new controller data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineStorageController &newControllerData = controllerCache.data();
-        /* Get new attachment data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineStorageAttachment &newAttachmentData = attachmentCache.data();
 
@@ -5793,7 +5812,7 @@
     if (fSuccess)
     {
-        /* Get new controller data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineStorageController &newControllerData = controllerCache.data();
-        /* Get new attachment data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineStorageAttachment &newAttachmentData = attachmentCache.data();
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp	(revision 94666)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp	(revision 94667)
@@ -257,9 +257,13 @@
 bool UIMachineSettingsSystem::changed() const
 {
-    return m_pCache->wasChanged();
+    return m_pCache ? m_pCache->wasChanged() : false;
 }
 
 void UIMachineSettingsSystem::loadToCacheFrom(QVariant &data)
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return;
+
     /* Fetch data to machine: */
     UISettingsPageMachine::fetchData(data);
@@ -268,5 +272,5 @@
     m_pCache->clear();
 
-    /* Prepare old system data: */
+    /* Prepare old data: */
     UIDataSettingsMachineSystem oldSystemData;
 
@@ -297,5 +301,5 @@
     oldSystemData.m_fEnabledNestedPaging = m_machine.GetHWVirtExProperty(KHWVirtExPropertyType_NestedPaging);
 
-    /* Cache old system data: */
+    /* Cache old data: */
     m_pCache->cacheInitialData(oldSystemData);
 
@@ -306,5 +310,9 @@
 void UIMachineSettingsSystem::getFromCache()
 {
-    /* Get old system data from cache: */
+    /* Sanity check: */
+    if (!m_pCache)
+        return;
+
+    /* Get old data from cache: */
     const UIDataSettingsMachineSystem &oldSystemData = m_pCache->base();
 
@@ -316,25 +324,45 @@
 
     /* Load old 'Motherboard' data from cache: */
-    m_pEditorBaseMemory->setValue(oldSystemData.m_iMemorySize);
-    m_pEditorBootOrder->setValue(oldSystemData.m_bootItems);
-    const int iChipsetTypePosition = m_pComboChipset->findData(oldSystemData.m_chipsetType);
-    m_pComboChipset->setCurrentIndex(iChipsetTypePosition == -1 ? 0 : iChipsetTypePosition);
-    const int iHIDTypePosition = m_pComboPointingHID->findData(oldSystemData.m_pointingHIDType);
-    m_pComboPointingHID->setCurrentIndex(iHIDTypePosition == -1 ? 0 : iHIDTypePosition);
-    m_pCheckBoxAPIC->setChecked(oldSystemData.m_fEnabledIoApic);
-    m_pCheckBoxEFI->setChecked(oldSystemData.m_fEnabledEFI);
-    m_pCheckBoxUTC->setChecked(oldSystemData.m_fEnabledUTC);
+    if (m_pEditorBaseMemory)
+        m_pEditorBaseMemory->setValue(oldSystemData.m_iMemorySize);
+    if (m_pEditorBootOrder)
+        m_pEditorBootOrder->setValue(oldSystemData.m_bootItems);
+    if (m_pComboChipset)
+    {
+        const int iChipsetTypePosition = m_pComboChipset->findData(oldSystemData.m_chipsetType);
+        m_pComboChipset->setCurrentIndex(iChipsetTypePosition == -1 ? 0 : iChipsetTypePosition);
+    }
+    if (m_pComboPointingHID)
+    {
+        const int iHIDTypePosition = m_pComboPointingHID->findData(oldSystemData.m_pointingHIDType);
+        m_pComboPointingHID->setCurrentIndex(iHIDTypePosition == -1 ? 0 : iHIDTypePosition);
+    }
+    if (m_pCheckBoxAPIC)
+        m_pCheckBoxAPIC->setChecked(oldSystemData.m_fEnabledIoApic);
+    if (m_pCheckBoxEFI)
+        m_pCheckBoxEFI->setChecked(oldSystemData.m_fEnabledEFI);
+    if (m_pCheckBoxUTC)
+        m_pCheckBoxUTC->setChecked(oldSystemData.m_fEnabledUTC);
 
     /* Load old 'Processor' data from cache: */
-    m_pSliderProcessorCount->setValue(oldSystemData.m_cCPUCount);
-    m_pSliderProcessorExecCap->setValue(oldSystemData.m_iCPUExecCap);
-    m_pCheckBoxPAE->setChecked(oldSystemData.m_fEnabledPAE);
-    m_pCheckBoxNestedVirtualization->setChecked(oldSystemData.m_fEnabledNestedHwVirtEx);
+    if (m_pSliderProcessorCount)
+        m_pSliderProcessorCount->setValue(oldSystemData.m_cCPUCount);
+    if (m_pSliderProcessorExecCap)
+        m_pSliderProcessorExecCap->setValue(oldSystemData.m_iCPUExecCap);
+    if (m_pCheckBoxPAE)
+        m_pCheckBoxPAE->setChecked(oldSystemData.m_fEnabledPAE);
+    if (m_pCheckBoxNestedVirtualization)
+        m_pCheckBoxNestedVirtualization->setChecked(oldSystemData.m_fEnabledNestedHwVirtEx);
 
     /* Load old 'Acceleration' data from cache: */
-    const int iParavirtProviderPosition = m_pComboParavirtProvider->findData(oldSystemData.m_paravirtProvider);
-    m_pComboParavirtProvider->setCurrentIndex(iParavirtProviderPosition == -1 ? 0 : iParavirtProviderPosition);
-    m_pCheckBoxVirtualization->setChecked(oldSystemData.m_fEnabledHwVirtEx);
-    m_pCheckBoxNestedPaging->setChecked(oldSystemData.m_fEnabledNestedPaging);
+    if (m_pComboParavirtProvider)
+    {
+        const int iParavirtProviderPosition = m_pComboParavirtProvider->findData(oldSystemData.m_paravirtProvider);
+        m_pComboParavirtProvider->setCurrentIndex(iParavirtProviderPosition == -1 ? 0 : iParavirtProviderPosition);
+    }
+    if (m_pCheckBoxVirtualization)
+        m_pCheckBoxVirtualization->setChecked(oldSystemData.m_fEnabledHwVirtEx);
+    if (m_pCheckBoxNestedPaging)
+        m_pCheckBoxNestedPaging->setChecked(oldSystemData.m_fEnabledNestedPaging);
 
     /* Polish page finally: */
@@ -347,5 +375,9 @@
 void UIMachineSettingsSystem::putToCache()
 {
-    /* Prepare new system data: */
+    /* Sanity check: */
+    if (!m_pCache)
+        return;
+
+    /* Prepare new data: */
     UIDataSettingsMachineSystem newSystemData;
 
@@ -357,36 +389,50 @@
 
     /* Gather 'Motherboard' data: */
-    newSystemData.m_iMemorySize = m_pEditorBaseMemory->value();
-    newSystemData.m_bootItems = m_pEditorBootOrder->value();
-    newSystemData.m_chipsetType = m_pComboChipset->currentData().value<KChipsetType>();
-    newSystemData.m_pointingHIDType = m_pComboPointingHID->currentData().value<KPointingHIDType>();
-    newSystemData.m_fEnabledIoApic =    m_pCheckBoxAPIC->isChecked()
-                                     || m_pSliderProcessorCount->value() > 1
-                                     || m_pComboChipset->currentData().value<KChipsetType>() == KChipsetType_ICH9;
-    newSystemData.m_fEnabledEFI = m_pCheckBoxEFI->isChecked();
-    newSystemData.m_fEnabledUTC = m_pCheckBoxUTC->isChecked();
+    if (m_pEditorBaseMemory)
+        newSystemData.m_iMemorySize = m_pEditorBaseMemory->value();
+    if (m_pEditorBootOrder)
+        newSystemData.m_bootItems = m_pEditorBootOrder->value();
+    if (m_pComboChipset)
+        newSystemData.m_chipsetType = m_pComboChipset->currentData().value<KChipsetType>();
+    if (m_pComboPointingHID)
+        newSystemData.m_pointingHIDType = m_pComboPointingHID->currentData().value<KPointingHIDType>();
+    if (   m_pCheckBoxAPIC
+        && m_pSliderProcessorCount
+        && m_pComboChipset)
+        newSystemData.m_fEnabledIoApic =    m_pCheckBoxAPIC->isChecked()
+                                         || m_pSliderProcessorCount->value() > 1
+                                         || m_pComboChipset->currentData().value<KChipsetType>() == KChipsetType_ICH9;
+    if (m_pCheckBoxEFI)
+        newSystemData.m_fEnabledEFI = m_pCheckBoxEFI->isChecked();
+    if (m_pCheckBoxUTC)
+        newSystemData.m_fEnabledUTC = m_pCheckBoxUTC->isChecked();
 
     /* Gather 'Processor' data: */
-    newSystemData.m_cCPUCount = m_pSliderProcessorCount->value();
-    newSystemData.m_iCPUExecCap = m_pSliderProcessorExecCap->value();
-    newSystemData.m_fEnabledPAE = m_pCheckBoxPAE->isChecked();
+    if (m_pSliderProcessorCount)
+        newSystemData.m_cCPUCount = m_pSliderProcessorCount->value();
+    if (m_pSliderProcessorExecCap)
+        newSystemData.m_iCPUExecCap = m_pSliderProcessorExecCap->value();
+    if (m_pCheckBoxPAE)
+        newSystemData.m_fEnabledPAE = m_pCheckBoxPAE->isChecked();
     newSystemData.m_fEnabledNestedHwVirtEx = isNestedHWVirtExEnabled();
 
     /* Gather 'Acceleration' data: */
-    newSystemData.m_paravirtProvider = m_pComboParavirtProvider->currentData().value<KParavirtProvider>();
+    if (m_pComboParavirtProvider)
+        newSystemData.m_paravirtProvider = m_pComboParavirtProvider->currentData().value<KParavirtProvider>();
     /* Enable HW Virt Ex automatically if it's supported and
      * 1. multiple CPUs, 2. Nested Paging or 3. Nested HW Virt Ex is requested. */
-    newSystemData.m_fEnabledHwVirtEx =    isHWVirtExEnabled()
-                                       || (   isHWVirtExSupported()
-                                           && (   m_pSliderProcessorCount->value() > 1
-                                               || isNestedPagingEnabled()
-                                               || isNestedHWVirtExEnabled()));
+    if (m_pSliderProcessorCount)
+        newSystemData.m_fEnabledHwVirtEx =    isHWVirtExEnabled()
+                                           || (   isHWVirtExSupported()
+                                               && (   m_pSliderProcessorCount->value() > 1
+                                                   || isNestedPagingEnabled()
+                                                   || isNestedHWVirtExEnabled()));
     /* Enable Nested Paging automatically if it's supported and
      * Nested HW Virt Ex is requested. */
     newSystemData.m_fEnabledNestedPaging =    isNestedPagingEnabled()
-                                           || (   isNestedPagingSupported()
-                                               && isNestedHWVirtExEnabled());
-
-    /* Cache new system data: */
+                                     || (   isNestedPagingSupported()
+                                         && isNestedHWVirtExEnabled());
+
+    /* Cache new data: */
     m_pCache->cacheCurrentData(newSystemData);
 }
@@ -686,5 +732,5 @@
 void UIMachineSettingsSystem::polishPage()
 {
-    /* Get old system data from cache: */
+    /* Get old data from cache: */
     const UIDataSettingsMachineSystem &systemData = m_pCache->base();
 
@@ -1320,4 +1366,8 @@
 bool UIMachineSettingsSystem::saveData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -1341,4 +1391,8 @@
 bool UIMachineSettingsSystem::saveMotherboardData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -1346,7 +1400,7 @@
     if (fSuccess)
     {
-        /* Get old system data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineSystem &oldSystemData = m_pCache->base();
-        /* Get new system data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineSystem &newSystemData = m_pCache->data();
 
@@ -1404,4 +1458,8 @@
 bool UIMachineSettingsSystem::saveProcessorData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -1409,7 +1467,7 @@
     if (fSuccess)
     {
-        /* Get old system data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineSystem &oldSystemData = m_pCache->base();
-        /* Get new system data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineSystem &newSystemData = m_pCache->data();
 
@@ -1449,4 +1507,8 @@
 bool UIMachineSettingsSystem::saveAccelerationData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
@@ -1454,7 +1516,7 @@
     if (fSuccess)
     {
-        /* Get old system data from cache: */
+        /* Get old data from cache: */
         const UIDataSettingsMachineSystem &oldSystemData = m_pCache->base();
-        /* Get new system data from cache: */
+        /* Get new data from cache: */
         const UIDataSettingsMachineSystem &newSystemData = m_pCache->data();
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.cpp	(revision 94666)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.cpp	(revision 94667)
@@ -369,9 +369,13 @@
 bool UIMachineSettingsUSB::changed() const
 {
-    return m_pCache->wasChanged();
+    return m_pCache ? m_pCache->wasChanged() : false;
 }
 
 void UIMachineSettingsUSB::loadToCacheFrom(QVariant &data)
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return;
+
     /* Fetch data to machine: */
     UISettingsPageMachine::fetchData(data);
@@ -398,5 +402,5 @@
         for (int iFilterIndex = 0; iFilterIndex < filters.size(); ++iFilterIndex)
         {
-            /* Prepare old filter data: */
+            /* Prepare old data: */
             UIDataSettingsMachineUSBFilter oldFilterData;
 
@@ -405,5 +409,5 @@
             if (!filter.isNull())
             {
-                /* Gather old filter data: */
+                /* Gather old data: */
                 oldFilterData.m_fActive = filter.GetActive();
                 oldFilterData.m_strName = filter.GetName();
@@ -418,5 +422,5 @@
             }
 
-            /* Cache old filter data: */
+            /* Cache old data: */
             m_pCache->child(iFilterIndex).cacheInitialData(oldFilterData);
         }
@@ -432,4 +436,9 @@
 void UIMachineSettingsUSB::getFromCache()
 {
+    /* Sanity check: */
+    if (   !m_pCache
+        || !m_pTreeWidgetFilters)
+        return;
+
     /* Clear list initially: */
     m_pTreeWidgetFilters->clear();
@@ -446,16 +455,35 @@
 
     /* Adjust radio-button visibility: */
-    m_pRadioButtonUSB1->setVisible(supportedTypes.contains(KUSBControllerType_OHCI));
-    m_pRadioButtonUSB2->setVisible(supportedTypes.contains(KUSBControllerType_EHCI));
-    m_pRadioButtonUSB3->setVisible(supportedTypes.contains(KUSBControllerType_XHCI));
+    if (m_pRadioButtonUSB1)
+        m_pRadioButtonUSB1->setVisible(supportedTypes.contains(KUSBControllerType_OHCI));
+    if (m_pRadioButtonUSB2)
+        m_pRadioButtonUSB2->setVisible(supportedTypes.contains(KUSBControllerType_EHCI));
+    if (m_pRadioButtonUSB3)
+        m_pRadioButtonUSB3->setVisible(supportedTypes.contains(KUSBControllerType_XHCI));
 
     /* Load old USB data from cache: */
-    m_pCheckBoxUSB->setChecked(oldUsbData.m_fUSBEnabled);
+    if (m_pCheckBoxUSB)
+        m_pCheckBoxUSB->setChecked(oldUsbData.m_fUSBEnabled);
     switch (oldUsbData.m_USBControllerType)
     {
         default:
-        case KUSBControllerType_OHCI: m_pRadioButtonUSB1->setChecked(true); break;
-        case KUSBControllerType_EHCI: m_pRadioButtonUSB2->setChecked(true); break;
-        case KUSBControllerType_XHCI: m_pRadioButtonUSB3->setChecked(true); break;
+        case KUSBControllerType_OHCI:
+        {
+            if (m_pRadioButtonUSB1)
+                m_pRadioButtonUSB1->setChecked(true);
+            break;
+        }
+        case KUSBControllerType_EHCI:
+        {
+            if (m_pRadioButtonUSB2)
+                m_pRadioButtonUSB2->setChecked(true);
+            break;
+        }
+        case KUSBControllerType_XHCI:
+        {
+            if (m_pRadioButtonUSB3)
+                m_pRadioButtonUSB3->setChecked(true);
+            break;
+        }
     }
 
@@ -466,5 +494,6 @@
     /* Choose first filter as current: */
     m_pTreeWidgetFilters->setCurrentItem(m_pTreeWidgetFilters->topLevelItem(0));
-    sltHandleUsbAdapterToggle(m_pCheckBoxUSB->isChecked());
+    if (m_pCheckBoxUSB)
+        sltHandleUsbAdapterToggle(m_pCheckBoxUSB->isChecked());
 
     /* Polish page finally: */
@@ -477,18 +506,27 @@
 void UIMachineSettingsUSB::putToCache()
 {
+    /* Sanity check: */
+    if (   !m_pCache
+        || !m_pTreeWidgetFilters)
+        return;
+
     /* Prepare new USB data: */
     UIDataSettingsMachineUSB newUsbData;
 
     /* Gather new USB data: */
-    newUsbData.m_fUSBEnabled = m_pCheckBoxUSB->isChecked();
+    if (m_pCheckBoxUSB)
+        newUsbData.m_fUSBEnabled = m_pCheckBoxUSB->isChecked();
     if (!newUsbData.m_fUSBEnabled)
         newUsbData.m_USBControllerType = KUSBControllerType_Null;
     else
     {
-        if (m_pRadioButtonUSB1->isChecked())
+        if (   m_pRadioButtonUSB1
+            && m_pRadioButtonUSB1->isChecked())
             newUsbData.m_USBControllerType = KUSBControllerType_OHCI;
-        else if (m_pRadioButtonUSB2->isChecked())
+        else if (   m_pRadioButtonUSB2
+                 && m_pRadioButtonUSB2->isChecked())
             newUsbData.m_USBControllerType = KUSBControllerType_EHCI;
-        else if (m_pRadioButtonUSB3->isChecked())
+        else if (   m_pRadioButtonUSB3
+                 && m_pRadioButtonUSB3->isChecked())
             newUsbData.m_USBControllerType = KUSBControllerType_XHCI;
     }
@@ -498,5 +536,5 @@
     for (int iFilterIndex = 0; iFilterIndex < pMainRootItem->childCount(); ++iFilterIndex)
     {
-        /* Gather and cache new filter data: */
+        /* Gather and cache new data: */
         const UIUSBFilterItem *pItem = static_cast<UIUSBFilterItem*>(pMainRootItem->child(iFilterIndex));
         m_pCache->child(iFilterIndex).cacheCurrentData(*pItem);
@@ -1089,4 +1127,8 @@
 bool UIMachineSettingsUSB::saveData()
 {
+    /* Sanity check: */
+    if (!m_pCache)
+        return false;
+
     /* Prepare result: */
     bool fSuccess = true;
