diff Python/frozenmain.c @ 48987:f83dccf417f0

Issue #3696: Error parsing arguments on OpenBSD <= 4.4 and Cygwin. Patch by Amaury Forgeot d'Arc, reviewed by me.
author Antoine Pitrou <solipsis@pitrou.net>
date Wed, 03 Sep 2008 18:58:51 +0000
parents 22a74eaf6b22
children 1e5b2050ec6a
line wrap: on
line diff
--- a/Python/frozenmain.c	Wed Sep 03 18:34:34 2008 +0000
+++ b/Python/frozenmain.c	Wed Sep 03 18:58:51 2008 +0000
@@ -45,7 +45,12 @@
 	oldloc = setlocale(LC_ALL, NULL);
 	setlocale(LC_ALL, "");
 	for (i = 0; i < argc; i++) {
+#ifdef HAVE_BROKEN_MBSTOWCS
+		size_t argsize = strlen(argv[i]);
+#else
 		size_t argsize = mbstowcs(NULL, argv[i], 0);
+#endif
+		size_t count;
 		if (argsize == (size_t)-1) {
 			fprintf(stderr, "Could not convert argument %d to string", i);
 			return 1;
@@ -56,7 +61,11 @@
 			fprintf(stderr, "out of memory");
 			return 1;
 		}
-		mbstowcs(argv_copy[i], argv[i], argsize+1);
+		count = mbstowcs(argv_copy[i], argv[i], argsize+1);
+		if (count == (size_t)-1) {
+			fprintf(stderr, "Could not convert argument %d to string", i);
+			return 1;
+		}
 	}
 	setlocale(LC_ALL, oldloc);