Skip to content

setlocale in utf8_decode will throw std::logic_error when setlocale returns NULL #128

@sean2077

Description

@sean2077

In unicode::details::utf8_decode function:

static inline std::wstring utf8_decode(const std::string& s) {
            std::string curLocale = setlocale(LC_ALL, "");
            const char* _Source = s.c_str();
            size_t _Dsize = mbstowcs(NULL, _Source, 0) + 1;
            wchar_t* _Dest = new wchar_t[_Dsize];
            wmemset(_Dest, 0, _Dsize);
            mbstowcs(_Dest, _Source, _Dsize);
            std::wstring result = _Dest;
            delete[] _Dest;
            setlocale(LC_ALL, curLocale.c_str());
            return result;
        }

std::string curLocale = setlocale(LC_ALL, ""); will throw std::logic_error when setlocale(LC_ALL, "") return NULL

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions