diff --git a/dconfig-center/common/valuehandler.cpp b/dconfig-center/common/valuehandler.cpp index cb1bd57..eb02357 100644 --- a/dconfig-center/common/valuehandler.cpp +++ b/dconfig-center/common/valuehandler.cpp @@ -309,12 +309,7 @@ ConfigGetter* ValueHandler::createManager() if (tmp->createManager(appid, fileName, subpath)) { return tmp; } - } else { - auto tmp = new FileHandler(this); - if (tmp->createManager(appid, fileName, subpath)) { - qDebug() << QString("using FileHandler to get value for appid=%1, resource=%2, subpath=%3.").arg(appid, fileName, subpath); - return tmp; - } + delete tmp; // 创建失败,释放内存 } qWarning() << QString("get value handler error for appid=%1, resource=%2, subpath=%3.").arg(appid, fileName, subpath); return nullptr; diff --git a/dconfig-center/dde-dconfig-editor/mainwindow.cpp b/dconfig-center/dde-dconfig-editor/mainwindow.cpp index 231b278..955c376 100644 --- a/dconfig-center/dde-dconfig-editor/mainwindow.cpp +++ b/dconfig-center/dde-dconfig-editor/mainwindow.cpp @@ -316,6 +316,10 @@ void MainWindow::onCustomResourceMenuRequested(const QString &appid, const QStri connect(resetCmdAction, &QAction::triggered, this, [this, appid, resource, subpath] { QScopedPointer getter(new ValueHandler(appid, resource, subpath)); QScopedPointer manager(getter->createManager()); + if (!manager) { + qWarning() << "Failed to create manager for reset command"; + return; + } const auto keys = manager->keyList(); #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) for (const auto &item : std::as_const(keys)) { @@ -607,6 +611,10 @@ void Content::onCustomContextMenuRequested(QWidget *widget, const QString &appid { m_getter.reset(new ValueHandler(appid, resource, subpath)); QScopedPointer manager(m_getter->createManager()); + if (!manager) { + qWarning() << "Failed to create manager for context menu"; + return; + } const QString &value = qvariantToCmd(manager.get()->value(key)); const QString &description = manager.get()->description(key, m_language); @@ -654,6 +662,10 @@ void Content::onCustomContextMenuRequested(QWidget *widget, const QString &appid connect(resetCmdAction, &QAction::triggered, this, [this, key, widget] { QScopedPointer manager(m_getter->createManager()); + if (!manager) { + qWarning() << "Failed to create manager for reset"; + return; + } const auto &old = manager->value(key); manager->reset(key); if (auto contentWidget = qobject_cast(widget)) { @@ -796,6 +808,10 @@ HistoryDialog::HistoryDialog(QWidget *parent) { QScopedPointer manager(handler.createManager()); + if (!manager) { + qWarning() << "Failed to create manager for history"; + return; + } if (manager) { const auto &key = historyView->model()->data(index, ConfigUserRole + 5).toString();