Skip to content

Bug: assignfoldercombobox-unguarded-archiverootpath-read #813

Description

@drmoisan
  • Work Mode: full-bug

Summary

QfcItemController.AssignFolderComboBox reads _globals.Ol?.ArchiveRootPath at
QuickFiler/Controllers/QfcItemController.FolderHandling.cs:233 with no try, and the method is
reached from the UI dispatcher. The null-conditional operator guards a null Ol; it does not guard
an ArchiveRootPath getter that throws when no archive root is configured. Guarding
FolderPredictor alone therefore does not prevent the failure at this call site.

Environment

  • OS/version: Windows 11 Pro 10.0.26200, .NET Framework 4.8 VSTO add-in hosted by Outlook
  • Python version: not applicable; this is C# in QuickFiler
  • Command/flags used: not a command-line defect; reached through the QuickFiler item pane
  • Data source or fixture: a profile whose Archive Root is unset, which is the state reported in
    issue 797 (Archive Root -> Outlook and File System both showing "Please select an archive")

Steps to Reproduce

  1. Open a profile whose Archive Root has never been set, so ArchiveRootPath has no configured value.
  2. Open QuickFiler on a mail item so the folder combo box is populated.
  3. Observe the folder-handling path reach AssignFolderComboBox with _folderHandler.FolderArray
    non-empty.

Expected Behavior

An unset archive root degrades the suggestion display - the predetermined folder is simply not
preselected - and QuickFiler continues to operate.

Actual Behavior

The read at QuickFiler/Controllers/QfcItemController.FolderHandling.cs:233 propagates the getter's
exception out of AssignFolderComboBox. Because line 188 of the same file invokes the method through
_itemViewer.UiDispatcher.InvokeAsync(AssignFolderComboBox), the exception surfaces on the UI
dispatcher rather than at a handled boundary.

AssignFolderComboBox begins at line 191 and contains no try block; the read sits six lines after
_itemViewer.SetFolderSuggestions(_folderHandler.FolderRowArray) consumes FolderRowArray.

Logs / Screenshots

  • Attached minimal logs or screenshot
  • Snippet: none captured; the finding is from static reading of the call path, not from a runtime
    trace. A runtime trace should be captured as part of the fix.

Impact / Severity

  • Blocker
  • High
  • Medium
  • Low

Medium: it is a user-visible failure on a supported configuration (archive root unset), and it is
the reason issue 812's AC1 outcome can be verified at unit level but not end to end in QuickFiler.

Source

From: docs/features/potential/2026-09-08-assignfoldercombobox-unguarded-archiverootpath-read.md

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions