mirror of
https://github.com/nextcloud/desktop.git
synced 2024-11-25 14:36:01 +03:00
Journal: 64bit inodes, fix storing uint64s generally
In addition to using the right function when retrieving inodes this *also* fixes a more general bug ownsql had with storing uint64 values that didn't fit into an int64.
This commit is contained in:
parent
3e294d5339
commit
dcf0baa9de
3 changed files with 7 additions and 3 deletions
|
@ -344,6 +344,7 @@ void SqlQuery::bindValue(int pos, const QVariant &value)
|
|||
break;
|
||||
case QVariant::UInt:
|
||||
case QVariant::LongLong:
|
||||
case QVariant::ULongLong:
|
||||
res = sqlite3_bind_int64(_stmt, pos, value.toLongLong());
|
||||
break;
|
||||
case QVariant::DateTime: {
|
||||
|
|
|
@ -45,7 +45,7 @@ Q_LOGGING_CATEGORY(lcDb, "sync.database", QtInfoMsg)
|
|||
static void fillFileRecordFromGetQuery(SyncJournalFileRecord &rec, SqlQuery &query)
|
||||
{
|
||||
rec._path = query.baValue(0);
|
||||
rec._inode = query.intValue(1);
|
||||
rec._inode = query.int64Value(1);
|
||||
rec._modtime = query.int64Value(2);
|
||||
rec._type = query.intValue(3);
|
||||
rec._etag = query.baValue(4);
|
||||
|
|
|
@ -50,7 +50,9 @@ private slots:
|
|||
QVERIFY(!record.isValid());
|
||||
|
||||
record._path = "foo";
|
||||
record._inode = 1234;
|
||||
// Use a value that exceeds uint32 and isn't representable by the
|
||||
// signed int being cast to uint64 either (like uint64::max would be)
|
||||
record._inode = std::numeric_limits<quint32>::max() + 12ull;
|
||||
record._modtime = dropMsecs(QDateTime::currentDateTime());
|
||||
record._type = 5;
|
||||
record._etag = "789789";
|
||||
|
@ -71,8 +73,9 @@ private slots:
|
|||
QVERIFY(storedRecord == record);
|
||||
|
||||
// Update metadata
|
||||
record._inode = 12345;
|
||||
record._modtime = dropMsecs(QDateTime::currentDateTime().addDays(1));
|
||||
// try a value that only fits uint64, not int64
|
||||
record._inode = std::numeric_limits<quint64>::max() - std::numeric_limits<quint32>::max() - 1;
|
||||
record._type = 7;
|
||||
record._etag = "789FFF";
|
||||
record._fileId = "efg";
|
||||
|
|
Loading…
Reference in a new issue