Mercurial > cpython-lru_cache-weakref
comparison Modules/python.c @ 84502:65f2c92ed079
Issue #18203: Add _PyMem_RawStrdup() and _PyMem_Strdup()
Replace strdup() with _PyMem_RawStrdup() or _PyMem_Strdup(), depending if the
GIL is held or not.
| author | Victor Stinner <victor.stinner@gmail.com> |
|---|---|
| date | Sun, 07 Jul 2013 23:30:24 +0200 |
| parents | 18bb92b0c458 |
| children | b583fd54c8d6 |
comparison
equal
deleted
inserted
replaced
| 84501:31a635303e55 | 84502:65f2c92ed079 |
|---|---|
| 41 | 41 |
| 42 m = fpgetmask(); | 42 m = fpgetmask(); |
| 43 fpsetmask(m & ~FP_X_OFL); | 43 fpsetmask(m & ~FP_X_OFL); |
| 44 #endif | 44 #endif |
| 45 | 45 |
| 46 oldloc = strdup(setlocale(LC_ALL, NULL)); | 46 oldloc = _PyMem_RawStrdup(setlocale(LC_ALL, NULL)); |
| 47 setlocale(LC_ALL, ""); | 47 setlocale(LC_ALL, ""); |
| 48 for (i = 0; i < argc; i++) { | 48 for (i = 0; i < argc; i++) { |
| 49 argv_copy[i] = _Py_char2wchar(argv[i], NULL); | 49 argv_copy[i] = _Py_char2wchar(argv[i], NULL); |
| 50 if (!argv_copy[i]) { | 50 if (!argv_copy[i]) { |
| 51 free(oldloc); | 51 PyMem_RawFree(oldloc); |
| 52 fprintf(stderr, "Fatal Python error: " | 52 fprintf(stderr, "Fatal Python error: " |
| 53 "unable to decode the command line argument #%i\n", | 53 "unable to decode the command line argument #%i\n", |
| 54 i + 1); | 54 i + 1); |
| 55 return 1; | 55 return 1; |
| 56 } | 56 } |
| 57 argv_copy2[i] = argv_copy[i]; | 57 argv_copy2[i] = argv_copy[i]; |
| 58 } | 58 } |
| 59 argv_copy2[argc] = argv_copy[argc] = NULL; | 59 argv_copy2[argc] = argv_copy[argc] = NULL; |
| 60 | 60 |
| 61 setlocale(LC_ALL, oldloc); | 61 setlocale(LC_ALL, oldloc); |
| 62 free(oldloc); | 62 PyMem_RawFree(oldloc); |
| 63 res = Py_Main(argc, argv_copy); | 63 res = Py_Main(argc, argv_copy); |
| 64 for (i = 0; i < argc; i++) { | 64 for (i = 0; i < argc; i++) { |
| 65 PyMem_RawFree(argv_copy2[i]); | 65 PyMem_RawFree(argv_copy2[i]); |
| 66 } | 66 } |
| 67 PyMem_RawFree(argv_copy); | 67 PyMem_RawFree(argv_copy); |
