Skip to content

fix: guard against unknown input contexts on destroy - #445

Merged
eagleoflqj merged 1 commit into
masterfrom
fix-destroy-input-context-guard
Oct 19, 2026
Merged

eagleoflqj merged 1 commit into
masterfrom
fix-destroy-input-context-guard

Conversation

@eagleoflqj

@eagleoflqj eagleoflqj commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

Guard MacosFrontend::destroyInputContext() against a failed UUID lookup before dereferencing the input context. Log the unexpected state with FCITX_ERROR() and return safely, preserving the existing CharacterPaletteIM and focus handling.

This is defensive hardening; no crash has been reproduced in the normal controller lifecycle. It does not address shutdown scheduling or runtime teardown.

Validation: successfully ran ./scripts/patch.sh, CMake Debug configuration, the full build, and git diff --check. The patch script skipped submodules with existing local changes. Build validation used the existing working tree, including unrelated local changes that are excluded from this PR. No runtime destruction test was run.

Summary by CodeRabbit

  • Bug Fixes
    • Prevented a crash when attempting to destroy an input context that cannot be found.

@coderabbitai

coderabbitai Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 983c061d-0fef-4dd2-9888-cd7ccbf88245
📥 Commits

Reviewing files that changed from the base of the PR and between ab4a582 and c8a013d.

📒 Files selected for processing: 1
  • macosfrontend/macosfrontend.cpp

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 2 remain after this review.

📝 Walkthrough

destroyInputContext now logs an error and returns when the UUID does not resolve to an input context.

Changes: Input context destruction

Layer / File(s) Summary
Unknown context guard
macosfrontend/macosfrontend.cpp
destroyInputContext logs an error and returns if findIC cannot resolve the UUID.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~5 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to c8a01

No concrete merge-blocking defect was identified in the defensive change.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 1 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the main change: preventing unsafe handling of unknown input contexts during destruction.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
  • Fix all pre-merge checks with AI
✨ Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

arm64 comparison

No difference.

x86_64 comparison

No difference.

@eagleoflqj
eagleoflqj merged commit 54c72b4 into master Oct 19, 2026
8 checks passed
@eagleoflqj
eagleoflqj deleted the fix-destroy-input-context-guard branch October 19, 2026 02:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant