[Python-checkins] r86343 - python/branches/py3k/Python/fileutils.c

victor.stinner python-checkins at python.org
Tue Nov 9 00:30:46 CET 2010


Author: victor.stinner
Date: Tue Nov 9 00:30:46 2010
New Revision: 86343
Log:
_Py_char2wchar() frees the memory on conversion error
Explain in the documentation that conversion errors should never happen.
Modified:
 python/branches/py3k/Python/fileutils.c
Modified: python/branches/py3k/Python/fileutils.c
==============================================================================
--- python/branches/py3k/Python/fileutils.c	(original)
+++ python/branches/py3k/Python/fileutils.c	Tue Nov 9 00:30:46 2010
@@ -16,7 +16,10 @@
 Return a pointer to a newly allocated wide character string (use
 PyMem_Free() to free the memory) and write the number of written wide
 characters excluding the null character into *size if size is not NULL, or
- NULL on error (conversion error or memory error). */
+ NULL on error (conversion or memory allocation error).
+
+ Conversion errors should never happen, unless there is a bug in the C
+ library. */
 wchar_t*
 _Py_char2wchar(const char* arg, size_t *size)
 {
@@ -64,7 +67,8 @@
 actual output could use less memory. */
 argsize = strlen(arg) + 1;
 res = (wchar_t*)PyMem_Malloc(argsize*sizeof(wchar_t));
- if (!res) goto oom;
+ if (!res)
+ goto oom;
 in = (unsigned char*)arg;
 out = res;
 memset(&mbs, 0, sizeof mbs);
@@ -79,6 +83,7 @@
 unless there is a bug in the C library, or I
 misunderstood how mbrtowc works. */
 fprintf(stderr, "unexpected mbrtowc result -2\n");
+ PyMem_Free(res);
 return NULL;
 }
 if (converted == (size_t)-1) {


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /