+dtkcore (5.7.9) unstable; urgency=medium
+
+ [ root ]
+ * UNRELEASED
+
+ -- Deepin Packages Builder <packages@deepin.org> Thu, 23 Jan 2025 09:07:08 +0000
+
+dtkcore (5.7.8) unstable; urgency=medium
+
+ [ root ]
+ * UNRELEASED
+
+ -- Deepin Packages Builder <packages@deepin.org> Tue, 14 Jan 2025 11:17:31 +0000
+
+dtkcore (5.7.7) unstable; urgency=medium
+
+ [ root ]
+ * UNRELEASED
+
+ -- Deepin Packages Builder <packages@deepin.org> Thu, 09 Jan 2025 09:28:38 +0000
+
+dtkcore (5.7.6) unstable; urgency=medium
+
+ [ root ]
+ * UNRELEASED
+
+ -- Deepin Packages Builder <packages@deepin.org> Thu, 02 Jan 2025 05:43:52 +0000
+
+dtkcore (5.7.5) unstable; urgency=medium
+
+ * fix: pidfd leak
+
+ -- Deepin Packages Builder <packages@deepin.org> Thu, 12 Dec 2024 03:03:54 +0000
+
dtkcore (5.7.4) unstable; urgency=medium
* fix: hasVtable is incorrect when destructing
return cache->setValue(key, value, configMeta->serial(key), cache->uid(), appid);
// convert copy to meta's type, it promises `setValue` don't change meta's type.
+ // canConvert isn't explicit, e.g: QString is also can convert to double.
auto copy = value;
if (!copy.convert(metaValue.metaType())) {
qCWarning(cfLog) << "check type error, meta type is " << metaValue.metaType().name()
<< ", and now type is " << value.metaType().name();
return false;
}
+
+ // TODO it's a bug of qt, MetaType of 1.0 is qlonglong instead of double in json file.
+ static const QVector<QMetaType> filterConvertType {
+ QMetaType{QMetaType::Double}
+ };
+ // reset to origin value.
+ if (filterConvertType.contains(value.metaType())) {
+ copy = value;
+ }
#else
if (metaValue.type() == value.type())
return cache->setValue(key, value, configMeta->serial(key), cache->uid(), appid);
<< ", and now type is " << value.type();
return false;
}
+
+ static const QVector<QVariant::Type> filterConvertType {
+ QVariant::Double
+ };
+ if (filterConvertType.contains(value.type())) {
+ copy = value;
+ }
#endif
return cache->setValue(key, copy, configMeta->serial(key), cache->uid(), appid);
int pidfd = syscall(SYS_pidfd_open, pid, 0);
if (pidfd < 0) {
- qCWarning(dsgApp) << "pidfd open failed:" << strerror(errno);
+ qCWarning(dsgApp) << "pidfd open failed:" << strerror(errno) << ", the pid:" << pid;
return QByteArray();
}
"org.desktopspec.ApplicationManager1");
QDBusReply<QString> reply = infc.call("Identify", QVariant::fromValue(QDBusUnixFileDescriptor(pidfd)));
+ // see QDBusUnixFileDescriptor: The original file descriptor is not touched and must be closed by the user.
+ close(pidfd);
if (!reply.isValid()) {
qCWarning(dsgApp) << "Identify from AM failed." << reply.error().message();
"permissions": "readwrite",
"visibility": "public"
},
+ "numberDouble": {
+ "value": 1.0,
+ "serial": 0,
+ "flags": ["global"],
+ "name": "double value type",
+ "permissions": "readwrite",
+ "visibility": "public"
+ },
"array": {
"value": ["value1", "value2"],
"serial": 0,
ASSERT_FALSE(config.setValue("number", "1ab", "test", userCache.get()));
ASSERT_EQ(config.value("number", userCache.get()).type(), type);
}
+ {
+ const auto type = config.value("numberDouble", userCache.get()).type();
+ ASSERT_TRUE(config.setValue("numberDouble", 1.2, "test", userCache.get()));
+ ASSERT_EQ(config.value("numberDouble", userCache.get()), 1.2);
+ }
{
const auto type = config.value("array", userCache.get()).type();
const QStringList array{"value1", "value2"};