mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-12-19 23:17:21 -06:00
Store hybrid torrents using legacy filenames
* Make Digest32 implicitly shared class * Store hybrid torrents using legacy filenames PR #16237.
This commit is contained in:
committed by
GitHub
parent
270e2023cd
commit
e93c360db6
@@ -32,6 +32,8 @@
|
||||
|
||||
#include <QByteArray>
|
||||
#include <QHash>
|
||||
#include <QSharedData>
|
||||
#include <QSharedDataPointer>
|
||||
#include <QString>
|
||||
|
||||
template <int N>
|
||||
@@ -43,11 +45,11 @@ public:
|
||||
Digest32() = default;
|
||||
|
||||
Digest32(const UnderlyingType &nativeDigest)
|
||||
: m_valid {true}
|
||||
, m_nativeDigest {nativeDigest}
|
||||
{
|
||||
m_dataPtr->valid = true;
|
||||
m_dataPtr->nativeDigest = nativeDigest;
|
||||
const QByteArray raw = QByteArray::fromRawData(nativeDigest.data(), length());
|
||||
m_hashString = QString::fromLatin1(raw.toHex());
|
||||
m_dataPtr->hashString = QString::fromLatin1(raw.toHex());
|
||||
}
|
||||
|
||||
static constexpr int length()
|
||||
@@ -57,12 +59,12 @@ public:
|
||||
|
||||
bool isValid() const
|
||||
{
|
||||
return m_valid;
|
||||
return m_dataPtr->valid;
|
||||
}
|
||||
|
||||
operator UnderlyingType() const
|
||||
{
|
||||
return m_nativeDigest;
|
||||
return m_dataPtr->nativeDigest;
|
||||
}
|
||||
|
||||
static Digest32 fromString(const QString &digestString)
|
||||
@@ -75,22 +77,27 @@ public:
|
||||
return {};
|
||||
|
||||
Digest32 result;
|
||||
result.m_valid = true;
|
||||
result.m_hashString = digestString;
|
||||
result.m_nativeDigest.assign(raw.constData());
|
||||
result.m_dataPtr->valid = true;
|
||||
result.m_dataPtr->hashString = digestString;
|
||||
result.m_dataPtr->nativeDigest.assign(raw.constData());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
QString toString() const
|
||||
{
|
||||
return m_hashString;
|
||||
return m_dataPtr->hashString;
|
||||
}
|
||||
|
||||
private:
|
||||
bool m_valid = false;
|
||||
UnderlyingType m_nativeDigest;
|
||||
QString m_hashString;
|
||||
struct Data : public QSharedData
|
||||
{
|
||||
bool valid = false;
|
||||
UnderlyingType nativeDigest;
|
||||
QString hashString;
|
||||
};
|
||||
|
||||
QSharedDataPointer<Data> m_dataPtr {new Data};
|
||||
};
|
||||
|
||||
template <int N>
|
||||
|
||||
Reference in New Issue
Block a user