From 452c8e200098575f6a104a2a947e13f60841617c Mon Sep 17 00:00:00 2001 From: peijiankang Date: Sun, 11 Jun 2023 16:06:58 +0800 Subject: [PATCH] fix coredump of ukui-power-manager (cherry picked from commit 74de9970c3603df30c3ee680971b6c369ab69999) --- 0001-fix-coredump-of-ukui-power-manager.patch | 143 ++++++++++++++++++ ukui-power-manager.spec | 7 +- 2 files changed, 148 insertions(+), 2 deletions(-) create mode 100644 0001-fix-coredump-of-ukui-power-manager.patch diff --git a/0001-fix-coredump-of-ukui-power-manager.patch b/0001-fix-coredump-of-ukui-power-manager.patch new file mode 100644 index 0000000..ea58fac --- /dev/null +++ b/0001-fix-coredump-of-ukui-power-manager.patch @@ -0,0 +1,143 @@ +From 2e9aa0e924c803a1ac3a1080e52bed8cae8095d3 Mon Sep 17 00:00:00 2001 +From: peijiankang +Date: Sun, 11 Jun 2023 15:59:52 +0800 +Subject: [PATCH] fix coredump of ukui-power-manager + +--- + ukui-power-manager-tray/powertray.cpp | 20 +++++++++--- + ukui-power-manager-tray/powerwindow.cpp | 43 ++++++++++++------------- + ukui-power-manager-tray/powerwindow.h | 4 +-- + 3 files changed, 39 insertions(+), 28 deletions(-) + +diff --git a/ukui-power-manager-tray/powertray.cpp b/ukui-power-manager-tray/powertray.cpp +index 6a36c06..75f986e 100644 +--- a/ukui-power-manager-tray/powertray.cpp ++++ b/ukui-power-manager-tray/powertray.cpp +@@ -147,8 +147,20 @@ void PowerTray::set_preference_func() + + PowerTray::~PowerTray() + { +- delete powerWindow; +- delete menu; +- delete trayIcon; +- delete iface; ++ if (nullptr != powerWindow) { ++ delete powerWindow; ++ powerWindow = nullptr; ++ } ++ if (nullptr != menu) { ++ delete menu; ++ menu = nullptr; ++ } ++ if (nullptr != trayIcon) { ++ delete trayIcon; ++ trayIcon = nullptr; ++ } ++ if (nullptr != iface) { ++ delete iface; ++ iface = nullptr; ++ } + } +diff --git a/ukui-power-manager-tray/powerwindow.cpp b/ukui-power-manager-tray/powerwindow.cpp +index 0b732b2..cf68795 100755 +--- a/ukui-power-manager-tray/powerwindow.cpp ++++ b/ukui-power-manager-tray/powerwindow.cpp +@@ -67,7 +67,7 @@ powerwindow::powerwindow(QWidget *parent) : QWidget(parent) + setWindowProperty(); //设置窗口属性 + initUI(); //初始化UI + initgsetting(); +- set_window_position(); //设置出现在屏幕的位置以及大小 ++ //set_window_position(); //设置出现在屏幕的位置以及大小 + watchTranspartency(); + + //监听屏幕改变的信号 +@@ -82,16 +82,15 @@ powerwindow::powerwindow(QWidget *parent) : QWidget(parent) + + powerwindow::~powerwindow() + { +- delete m_pmainlayout; +- delete m_firstlayout; +- delete lastlayout; +- delete m_firstwidget; +- delete iconButton; +- delete percentageLabel; +- delete powerStateLabel; +- delete powerTimeToEmpty; +- delete settingLabel; +- delete transparency_gsettings; ++ if (nullptr != transparency_gsettings) { ++ delete transparency_gsettings; ++ transparency_gsettings = nullptr; ++ } ++ if (nullptr != percentageLabel) { ++ delete percentageLabel; ++ percentageLabel = nullptr; ++ } ++ + } + + void powerwindow::setWindowProperty() +@@ -115,27 +114,27 @@ void powerwindow::initUI() + hints.decorations = MWM_DECOR_BORDER; + XAtomHelper::getInstance()->setWindowMotifHint(this->winId(), hints); + +- m_pmainlayout = new QVBoxLayout(); ++ m_pmainlayout = new QVBoxLayout(this); + m_firstlayout = new QHBoxLayout(this); + m_firstlayout->setContentsMargins(0, 0, 0, 0); +- m_toplayout = new QHBoxLayout(); +- lastlayout = new QHBoxLayout(); +- m_statelayout = new QHBoxLayout(); ++ m_toplayout = new QHBoxLayout(this); ++ lastlayout = new QHBoxLayout(this); ++ m_statelayout = new QHBoxLayout(this); + +- m_firstwidget = new QWidget(); +- m_topwidget = new QWidget(); +- lastWidget = new QWidget(); +- m_statewidget = new QWidget(); ++ m_firstwidget = new QWidget(this); ++ m_topwidget = new QWidget(this); ++ lastWidget = new QWidget(this); ++ m_statewidget = new QWidget(this); + +- iconButton = new BatteryIcon(); ++ iconButton = new BatteryIcon(this); + + percentageLabel = new PercentageLabel(); + +- powerStateLabel = new QLabel(); ++ powerStateLabel = new QLabel(this); + powerStateLabel->setText(tr("Charging")); + powerStateLabel->setVisible(false); + +- powerTimeToEmpty = new QLabel(); ++ powerTimeToEmpty = new QLabel(this); + powerTimeToEmpty->setVisible(true); + + m_segmentationLine_1 = new Divider(this); +diff --git a/ukui-power-manager-tray/powerwindow.h b/ukui-power-manager-tray/powerwindow.h +index fffe943..84536ab 100755 +--- a/ukui-power-manager-tray/powerwindow.h ++++ b/ukui-power-manager-tray/powerwindow.h +@@ -92,7 +92,7 @@ public: + QWidget *m_statewidget; + + BatteryIcon *iconButton; +- PercentageLabel *percentageLabel; ++ PercentageLabel *percentageLabel = nullptr; + QLabel *powerStateLabel; + QLabel *powerTimeToEmpty; + QLabel *toplabel; +@@ -123,7 +123,7 @@ private : + int m_sysFontSize; + int m_batteryState; + double transparency; +- QGSettings *transparency_gsettings; ++ QGSettings *transparency_gsettings = nullptr; + QDBusInterface *m_notifyInterface; + QGSettings *m_PowerManagerGsettings; + enum powerPolicy +-- +2.33.0 + diff --git a/ukui-power-manager.spec b/ukui-power-manager.spec index 7898910..6753ee8 100644 --- a/ukui-power-manager.spec +++ b/ukui-power-manager.spec @@ -1,13 +1,13 @@ Name: ukui-power-manager Version: 3.1.2 -Release: 4 +Release: 5 Summary: power management tool for the UKUI desktop License: GPL-3+ URL: http://www.ukui.org Source0: %{name}-%{version}.tar.gz Patch01: ukui-power-manager-3.1.2-fix-default-power-setting.patch - +Patch02: 0001-fix-coredump-of-ukui-power-manager.patch BuildRequires: qt5-qtbase-devel, qt5-qttools-devel, ukui-interface, glib2-devel, upower-devel, libX11-devel, libXext-devel, perl-XML-Parser, libXrandr-devel, pkg-config, gsettings-qt-devel, kf5-kwindowsystem-devel, qt5-qtx11extras-devel libkysdk-qtwidgets-devel chrpath Requires: dbus-x11,systemd,upower @@ -73,6 +73,9 @@ glib-compile-schemas /usr/share/glib-2.0/schemas/ &> /dev/null ||: %{_datadir}/man/* %changelog +* Sun Jun 11 2023 peijiankang - 3.1.2-5 +- fix coredump of ukui-power-manager + * Wed Mar 01 2023 peijiankang - 3.1.2-4 - remove rpath of ukui-power-manager-tray -- Gitee