summaryrefslogtreecommitdiff
path: root/Modules/python.c
diff options
context:
space:
mode:
authorNed Deily <nad@acm.org>2013-10-27 19:50:34 -0700
committerNed Deily <nad@acm.org>2013-10-27 19:50:34 -0700
commit8d7b2d90166762520cd2f911bb3bcaf71c41c98c (patch)
tree9d1da9bb4648df90b7f435bc5eadc38c26da011e /Modules/python.c
parente189af888c1cebf3a817b6e32ab5109c539f8a6c (diff)
parent9f93a93d542edbe2155e929d945e7ed80d12ec3d (diff)
downloadcpython-8d7b2d90166762520cd2f911bb3bcaf71c41c98c.tar.gz
Issue #19373: merge from 3.3
Diffstat (limited to 'Modules/python.c')
-rw-r--r--Modules/python.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/Modules/python.c b/Modules/python.c
index f781d9a525..9811c01d49 100644
--- a/Modules/python.c
+++ b/Modules/python.c
@@ -23,9 +23,12 @@ main(int argc, char **argv)
wchar_t **argv_copy2;
int i, res;
char *oldloc;
+#ifdef __FreeBSD__
+ fp_except_t m;
+#endif
- argv_copy = (wchar_t **)PyMem_Malloc(sizeof(wchar_t*)*(argc+1));
- argv_copy2 = (wchar_t **)PyMem_Malloc(sizeof(wchar_t*)*(argc+1));
+ argv_copy = (wchar_t **)PyMem_RawMalloc(sizeof(wchar_t*) * (argc+1));
+ argv_copy2 = (wchar_t **)PyMem_RawMalloc(sizeof(wchar_t*) * (argc+1));
if (!argv_copy || !argv_copy2) {
fprintf(stderr, "out of memory\n");
return 1;
@@ -37,17 +40,21 @@ main(int argc, char **argv)
* exceptions by default. Here we disable them.
*/
#ifdef __FreeBSD__
- fp_except_t m;
-
m = fpgetmask();
fpsetmask(m & ~FP_X_OFL);
#endif
- oldloc = strdup(setlocale(LC_ALL, NULL));
+
+ oldloc = _PyMem_RawStrdup(setlocale(LC_ALL, NULL));
+ if (!oldloc) {
+ fprintf(stderr, "out of memory\n");
+ return 1;
+ }
+
setlocale(LC_ALL, "");
for (i = 0; i < argc; i++) {
argv_copy[i] = _Py_char2wchar(argv[i], NULL);
if (!argv_copy[i]) {
- free(oldloc);
+ PyMem_RawFree(oldloc);
fprintf(stderr, "Fatal Python error: "
"unable to decode the command line argument #%i\n",
i + 1);
@@ -58,13 +65,13 @@ main(int argc, char **argv)
argv_copy2[argc] = argv_copy[argc] = NULL;
setlocale(LC_ALL, oldloc);
- free(oldloc);
+ PyMem_RawFree(oldloc);
res = Py_Main(argc, argv_copy);
for (i = 0; i < argc; i++) {
- PyMem_Free(argv_copy2[i]);
+ PyMem_RawFree(argv_copy2[i]);
}
- PyMem_Free(argv_copy);
- PyMem_Free(argv_copy2);
+ PyMem_RawFree(argv_copy);
+ PyMem_RawFree(argv_copy2);
return res;
}
#endif