microsoft / microsoft/vscode-cpptools
Contents of `c_cpp_properties.json` file can get irrecoverably deleted
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 6.2k
- Forks
- 1.7k
- Avg merge
- 14h 46m
- Merged PRs (30d)
- 61
Description
Environment
- OS and Version: Debian 6.1.0-32-amd64
- VS Code Version: 1.98.2
- C/C++ Extension Version: 1.24.5
- If using SSH remote, specify OS of remote machine: N/A
Bug Summary and Steps to Reproduce
Bug Summary:
After stashing and restoring .vscode/c_cpp_properties.json through git, cpptools will re-populate it's contents with default value deleting old contents.
Also works when temporarily moving or renaming .vscode directory.
Steps to reproduce:
- Create empty project and initialize git.
mkdir -p foo/.vscode cd foo touch main.c git init git add main.c git commit -m 'Initial commit' - Populate
c_cpp_properties.json. Just something that differs from the default.echo '{"configurations":[{"name":"Foo"}],"version":4}' > .vscode/c_cpp_properties.json - Open project folder in vscode and edit
main.c. You should see C/C++ configuration is "Foo". - Without closing vscode, stash untracked files and then restore them.
git stash -k -u git stash pop - Switch back to
main.c. You should see C/C++ configuration has changed to default ("Linux" in my case). - Click
C/C++: Edit Configurations (JSON)through bottom right corner or command palette. This action destroys contents ofc_cpp_properties.json. If you'd instead close and re-open vscode, you'd be safe.
Configuration and Logs
{"configurations":[{"name":"Foo"}],"version":4}
[C++.log](https://github.com/user-attachments/files/19702057/C%2B%2B.log)
[C++ Diagnostics.log](https://github.com/user-attachments/files/19702056/C%2B%2B.Diagnostics.log)
Other Extensions
- Vim
Additional context
No response
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the issue with .vscode/c_cpp_properties.json using the listed git stash -k -u and git stash pop steps, then use C/C++: Edit Configurations (JSON) to confirm the overwrite. Read the linked C++ logs while tracing the extension behavior around the restored configuration. Done means the custom Foo configuration remains intact after restoration and editing the JSON configuration.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100