[Python-checkins] r45573 - in python/trunk: Doc/lib/libos.tex Lib/test/test_posix.py Modules/posixmodule.c
"Martin v. Löwis"
martin at v.loewis.de
Thu Apr 20 08:11:37 CEST 2006
skip.montanaro wrote:
> Correct implementation and documentation of os.confstr. Add a simple test
> case. I've yet to figure out how to provoke a None return I can test.
I couldn't find an "unconfigured" value on Linux, either. I could find
some values which return an empty string (e.g. 1006, _CS_LFS64_LIBS),
so I still think it is good to tell these cases apart.
> if ((unsigned int)len >= sizeof(buffer)) {
> - result = PyString_FromStringAndSize(NULL, len);
> + result = PyString_FromStringAndSize(NULL, len+1);
> if (result != NULL)
> confstr(name, PyString_AS_STRING(result), len+1);
> }
Somebody please correct me, but this still doesn't look right. As "len"
includes the terminating null byte as returned from confstr, and as
PyString_FromStringAndSize requires the number of characters *in*
the string (i.e. excluding the terminating null byte), I think this
should be
if ((unsigned int)len >= sizeof(buffer)) {
result = PyString_FromStringAndSize(NULL, len-1);
if (result != NULL)
confstr(name, PyString_AS_STRING(result), len);
}
Also, for symmetry, I would like the second case to read
result = PyString_FromStringAndSize(buffer, len-1);
What do you think?
Regards,
Martin
More information about the Python-checkins
mailing list