#ifdef WIN32
FILE *fopen(const char *fname, const char *mode) {
size_t sz = sizeof(wchar_t) * MultiByteToWideChar(CP_UTF8, 0, fname, -1, NULL, 0);
- wchar_t *wfname = alloca(sz);
+ wchar_t *wfname = alloca(sz + 2); // +2 is not needed, but just in case
MultiByteToWideChar(CP_UTF8, 0, fname, -1, wfname, sz);
- sz = MultiByteToWideChar(CP_UTF8, 0, mode, -1, NULL, 0);
- wchar_t *wmode = alloca(sz);
+ sz = sizeof(wchar_t) * MultiByteToWideChar(CP_UTF8, 0, mode, -1, NULL, 0);
+ wchar_t *wmode = alloca(sz); // +2 is not needed, but just in case
MultiByteToWideChar(CP_UTF8, 0, mode, -1, wmode, sz);
return _wfopen(wfname, wmode);
}