-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix issues with group functions #2410
Conversation
src/core/Group.cpp
Outdated
for (Entry* entry : entriesRecursive(false)) { | ||
if (entry->title() == entryId) { | ||
return entry; | ||
if (!uuid.isNull()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if (uuid.isNull()) {
return nullptr;
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why? then this function would have three return statements (short circuit, in-loop, and fall-through). I don't agree with that approach. I actually changed it specifically to this fashion because the old method was confusing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You have three indentation levels here. I prefer keeping it shallow.
src/core/Group.cpp
Outdated
for (Group* group : asConst(m_children)) { | ||
Entry* entry = group->findEntryByPath(entryPath, basePath + group->name() + QString("/")); | ||
for (Group* group : children()) { | ||
Entry* entry = group->findEntryByPathRecursion(entryPath, basePath + group->name() + "/"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Recursive
src/core/Group.cpp
Outdated
for (Group* group : groupsRecursive(true)) { | ||
if (group->uuid() == uuid) { | ||
return group; | ||
if (!uuid.isNull()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See above.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same comment, changing this will create three return statements unnecessarily
tests/TestGroup.cpp
Outdated
QVERIFY(entry == nullptr); | ||
|
||
// An invalid UUID. | ||
entry = db->rootGroup()->findEntry(QString("febfb01ebcdf9dbd90a3f1579dc")); | ||
entry = db->rootGroup()->findEntryByUuid(QUuid("febfb01ebcdf9dbd90a3f1579dc")); | ||
QVERIFY(entry == nullptr); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
QVERIFY(!entry);
tests/TestGroup.cpp
Outdated
entry = db->rootGroup()->findEntryByUuid({}); | ||
QVERIFY(entry == nullptr); | ||
|
||
entry = db->rootGroup()->findEntryByPath({}); | ||
QVERIFY(entry == nullptr); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ditto.
b6519bf
to
a1d9f66
Compare
changes made to short circuit return nullptr. |
a1d9f66
to
0162f2a
Compare
- New Database Wizard [#1952] - Advanced Search [#1797] - Automatic update checker [#2648] - KeeShare database synchronization [#2109, #1992, #2738, #2742, #2746, #2739] - Improve favicon fetching; transition to Duck-Duck-Go [#2795, #2011, #2439] - Remove KeePassHttp support [#1752] - CLI: output info to stderr for easier scripting [#2558] - CLI: Add --quiet option [#2507] - CLI: Add create command [#2540] - CLI: Add recursive listing of entries [#2345] - CLI: Fix stdin/stdout encoding on Windows [#2425] - SSH Agent: Support OpenSSH for Windows [#1994] - macOS: TouchID Quick Unlock [#1851] - macOS: Multiple improvements; include CLI in DMG [#2165, #2331, #2583] - Linux: Prevent Klipper from storing secrets in clipboard [#1969] - Linux: Use polling based file watching for NFS [#2171] - Linux: Enable use of browser plugin in Snap build [#2802] - TOTP QR Code Generator [#1167] - High-DPI Scaling for 4k screens [#2404] - Make keyboard shortcuts more consistent [#2431] - Warn user if deleting referenced entries [#1744] - Allow toolbar to be hidden and repositioned [#1819, #2357] - Increase max allowed database timeout to 12 hours [#2173] - Password generator uses existing password length by default [#2318] - Improve alert message box button labels [#2376] - Show message when a database merge makes no changes [#2551] - Browser Integration Enhancements [#1497, #2253, #1904, #2232, #1850, #2218, #2391, #2396, #2542, #2622, #2637, #2790] - Overall Code Improvements [#2316, #2284, #2351, #2402, #2410, #2419, #2422, #2443, #2491, #2506, #2610, #2667, #2709, #2731]
Description
Resolves #2408
Just some cleanup and streamlining in the Group class. Eliminated function that had undetermined results based on heuristics of the input (Group::findEntry). Aligned Group::findEntryByPath with Group::findGroupByPath.
Eliminated unnecessary Q_ASSERTS and integrated the checks into the code function instead.
Recommendation: rename Group::children() to Group::groups(). Children overshadows QObject function AND it is the only place where the name children is used, otherwise we just call them groups...
Recommendation 2: Look for other places where QString::isNull() is used and evaluate whether it makes sense. This function is for legacy purposes only and QString::isEmpty() is preferred by the Qt Docs.
Types of changes
Checklist:
-DWITH_ASAN=ON
. [REQUIRED]