Fix crashes on Windows by replacing ScopedLpwstr with std::wstring. #43
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
After further investigation into #42.
It seems that the crashes have to do with usage of
std::unique_ptr
itself.Even using the correct
using ScopedLpwstr = std::unique_ptr<WCHAR[], LpwstrDeleter>;
.With accompanying
delete[]
does not fix the issue, and the issues persist.So in order to fix the issue instead of using
std::unique_ptr<>
we usestd::string
andstd::wstring
.As they abstract direct usage of
new[]
ordelete[]
.And the issue with
std::unique_ptr<>
seems to occur from some kind of mismatch between the C++ runtime allocator and the allocator Windows uses.Other people who use
MultiByteToWideChar()
generally use std::wstring:https://stackoverflow.com/questions/14184709/is-this-code-safe-using-wstring-with-multibytetowidechar
I think in order to fix this issue it is better to follow suite since it seems like the most straightforward way to go.