• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

IJHack / QtPass / 28650029157
63%

Build:
DEFAULT BRANCH: main
Ran 03 Jul 2026 09:05AM UTC
Jobs 1
Files 81
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

03 Jul 2026 08:59AM UTC coverage: 56.726% (-0.002%) from 56.728%
28650029157

push

github

web-flow
fix: prevent PasswordDialog content duplication and premature-save data loss (#1605)

* fix: prevent PasswordDialog content duplication and premature-save data loss

Two data-integrity bugs when editing an existing entry:

- setPassword() populated the free-text body with insertPlainText(), which
  appends. PasswordDialog listens to the shared Pass::finishedShow signal, so a
  second Show (a later one for any entry) re-ran the handler and appended a
  second copy of the body; getPassword() then saved the duplicated content back
  to the file. Use setPlainText() so re-populating replaces the body, and
  disconnect from finishedShow after the first (our) result so a later Show of a
  different entry can no longer overwrite or duplicate these fields.

- on_accepted() guarded with `if (newValue.isEmpty()) return;`, but
  getPassword() always returns at least a trailing newline, so the guard was
  dead code. Clicking OK before the asynchronous Show finished decrypting
  therefore overwrote the existing entry with the empty dialog fields. Track a
  m_contentLoaded flag (set when the entry's content arrives) and refuse to save
  an existing entry until it has loaded.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JuQsrHonihp1nARE7bzstc

* fix: keep listening for finishedShow instead of disconnecting after first

finishedShow carries no request identity, so disconnecting after the first
signal risked consuming a stale queued Show as this dialog's result and never
seeing its own. The dialog is modal and always edits the selected entry, and
setPassword() replaces every field (so repeated results overwrite rather than
duplicate — the original duplication bug is fixed by setPlainText). Drop the
disconnect and rely on last-writer-wins instead.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JuQsrHonihp1nARE7bzstc

---------... (continued)

2 of 4 new or added lines in 1 file covered. (50.0%)

1 existing line in 1 file now uncovered.

3812 of 6720 relevant lines covered (56.73%)

30.77 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
69.34
-0.29% src/passworddialog.cpp

Coverage Regressions

Lines Coverage ∆ File
1
69.34
-0.29% src/passworddialog.cpp
Jobs
ID Job ID Ran Files Coverage
1 28650029157.1 03 Jul 2026 09:05AM UTC 81
56.73
GitHub Action Run
Source Files on build 28650029157
  • Tree
  • List 81
  • Changed 3
  • Source Changed 3
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #28650029157
  • e450c237 on github
  • Prev Build on main (#28647196804)
  • Next Build on main (#28657019015)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc