--- /usr/src/python2.4-2.4.4/Lib/xmlrpclib.py 2005-02-11 19:00:16.000000000 +0100 +++ /usr/lib/python2.4/xmlrpclib.py 2007-07-04 11:44:48.000000000 +0200 @@ -168,7 +168,10 @@ def _stringify(string): # convert to 7-bit ascii if possible try: - return string.encode("ascii") + if isinstance(string, unicode): + return string.encode("ascii") + else: + return string except UnicodeError: return string else: @@ -771,7 +774,14 @@ except KeyError: pass # unknown tag ? else: - return f(self, join(self._data, "")) + # Avoid a data copy if only one item + if len(self._data) != 1: + data = join(self._data, "") + else: + data = self._data[0] + # Free _data as soon as we can, to avoid keeping memory too long + self._data = [] + return f(self, data) # # accelerator support