Mercurial > cpython-lru_cache-weakref
comparison Modules/python.c @ 84861:47c6aa17fd90
Issue #15893: Improve error handling in main() and Py_FrozenMain()
* handle _PyMem_RawStrdup() failure
* Py_FrozenMain() releases memory on error
* Py_FrozenMain() duplicates the old locale, as done in main()
| author | Victor Stinner <victor.stinner@gmail.com> |
|---|---|
| date | Sat, 27 Jul 2013 02:39:09 +0200 |
| parents | 386ab2c12301 |
| children |
comparison
equal
deleted
inserted
replaced
| 84860:0001c4100823 | 84861:47c6aa17fd90 |
|---|---|
| 43 m = fpgetmask(); | 43 m = fpgetmask(); |
| 44 fpsetmask(m & ~FP_X_OFL); | 44 fpsetmask(m & ~FP_X_OFL); |
| 45 #endif | 45 #endif |
| 46 | 46 |
| 47 oldloc = _PyMem_RawStrdup(setlocale(LC_ALL, NULL)); | 47 oldloc = _PyMem_RawStrdup(setlocale(LC_ALL, NULL)); |
| 48 if (!oldloc) { | |
| 49 fprintf(stderr, "out of memory\n"); | |
| 50 return 1; | |
| 51 } | |
| 52 | |
| 48 setlocale(LC_ALL, ""); | 53 setlocale(LC_ALL, ""); |
| 49 for (i = 0; i < argc; i++) { | 54 for (i = 0; i < argc; i++) { |
| 50 argv_copy[i] = _Py_char2wchar(argv[i], NULL); | 55 argv_copy[i] = _Py_char2wchar(argv[i], NULL); |
| 51 if (!argv_copy[i]) { | 56 if (!argv_copy[i]) { |
| 52 PyMem_RawFree(oldloc); | 57 PyMem_RawFree(oldloc); |
