2010/10/29 martin.v.loewis <python-check...@python.org>: > Author: martin.v.loewis > Date: Fri Oct 29 20:20:08 2010 > New Revision: 85934 > > Log: > Issue #9377: Use Unicode API for gethostname on Windows. > > Modified: > python/branches/py3k/Misc/NEWS > python/branches/py3k/Modules/socketmodule.c > > Modified: python/branches/py3k/Misc/NEWS > ============================================================================== > --- python/branches/py3k/Misc/NEWS (original) > +++ python/branches/py3k/Misc/NEWS Fri Oct 29 20:20:08 2010 > @@ -160,6 +160,8 @@ > Extensions > ---------- > > +- Issue #9377: Use Unicode API for gethostname on Windows. > + > - Issue #10143: Update "os.pathconf" values. > > - Issue #6518: Support context manager protcol for ossaudiodev types. > > Modified: python/branches/py3k/Modules/socketmodule.c > ============================================================================== > --- python/branches/py3k/Modules/socketmodule.c (original) > +++ python/branches/py3k/Modules/socketmodule.c Fri Oct 29 20:20:08 2010 > @@ -3093,6 +3093,27 @@ > static PyObject * > socket_gethostname(PyObject *self, PyObject *unused) > { > +#ifdef MS_WINDOWS > + /* Don't use winsock's gethostname, as this returns the ANSI > + version of the hostname, whereas we need a Unicode string. > + Otherwise, gethostname apparently also returns the DNS name. */ > + wchar_t buf[MAX_COMPUTERNAME_LENGTH]; > + DWORD size = sizeof(buf); > + if (!GetComputerNameExW(ComputerNamePhysicalDnsHostname, buf, &size)) { > + if (GetLastError() == ERROR_MORE_DATA) { > + /* MSDN says this may occur "because DNS allows longer names */ > + PyObject *result = PyUnicode_FromUnicode(NULL, size); > + if (!result) > + return NULL; > + if (GetComputerName(ComputerNamePhysicalDnsHostname, > + PyUnicode_AS_UNICODE(result), > + size+1)) > + return result;
A reference leak (of result) occurs here if GetComputerName fails again. -- Regards, Benjamin _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com