Skip to content

Commit 1bc4f68

Browse files
kuzmich321blinkov
authored andcommitted
fix arcadia py3 runtime for win due to encoding
[Вот так](HIDDEN_URL делает нативный питон [Репродьюсер](HIDDEN_URL Как оно выглядит [ДО](HIDDEN_URL и [ПОСЛЕ](HIDDEN_URL, а вот так [нативный](HIDDEN_URL commit_hash:cdce69c28e699d42f25e43f5d6efb214c8227024
1 parent e8b6835 commit 1bc4f68

File tree

1 file changed

+30
-1
lines changed
  • library/python/runtime_py3/main

1 file changed

+30
-1
lines changed

library/python/runtime_py3/main/main.c

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,20 @@ static int RunModule(const char* modname)
7474
return 0;
7575
}
7676

77-
static int pymain(int argc, char** argv) {
77+
#ifdef MS_WINDOWS
78+
static int pymain(int argc, wchar_t** argv)
79+
#else
80+
static int pymain(int argc, char** argv)
81+
#endif
82+
{
7883
PyStatus status;
7984

8085
if (IsYaIdeVenv()) {
86+
#ifdef MS_WINDOWS
87+
return Py_Main(argc, argv);
88+
#else
8189
return Py_BytesMain(argc, argv);
90+
#endif
8291
}
8392

8493
status = _PyRuntime_Initialize();
@@ -115,12 +124,20 @@ static int pymain(int argc, char** argv) {
115124
}
116125

117126
if (argc > 0 && argv) {
127+
#ifdef MS_WINDOWS
128+
status = PyConfig_SetString(&config, &config.program_name, argv[0]);
129+
#else
118130
status = PyConfig_SetBytesString(&config, &config.program_name, argv[0]);
131+
#endif
119132
if (PyStatus_Exception(status)) {
120133
goto error;
121134
}
122135

136+
#ifdef MS_WINDOWS
137+
status = PyConfig_SetArgv(&config, argc, argv);
138+
#else
123139
status = PyConfig_SetBytesArgv(&config, argc, argv);
140+
#endif
124141
if (PyStatus_Exception(status)) {
125142
goto error;
126143
}
@@ -155,7 +172,11 @@ static int pymain(int argc, char** argv) {
155172
}
156173

157174
if (entry_point_copy && !strcmp(entry_point_copy, main_entry_point)) {
175+
#ifdef MS_WINDOWS
176+
sts = Py_Main(argc, argv);
177+
#else
158178
sts = Py_BytesMain(argc, argv);
179+
#endif
159180
free(entry_point_copy);
160181
return sts;
161182
}
@@ -217,8 +238,16 @@ static int pymain(int argc, char** argv) {
217238
return sts;
218239
}
219240

241+
#ifdef MS_WINDOWS
242+
int (*mainptr)(int argc, wchar_t** argv) = pymain;
243+
244+
int wmain(int argc, wchar_t** argv) {
245+
return mainptr(argc, argv);
246+
}
247+
#else
220248
int (*mainptr)(int argc, char** argv) = pymain;
221249

222250
int main(int argc, char** argv) {
223251
return mainptr(argc, argv);
224252
}
253+
#endif

0 commit comments

Comments
 (0)