--- console-orig.py Fri Dec 21 00:04:09 2007 +++ console.py Fri Dec 21 00:41:48 2007 @@ -351,7 +351,7 @@ #self.WriteConsoleW(self.hout, ensure_str(chunk), len(chunk), byref(junk), None) return n - def write_color(self, text, attr=None): + def write_color_part(self, text, attr=None): text = ensure_unicode(text) n,res= self.ansiwriter.write_color(text,attr) junk = c_int(0) @@ -360,6 +360,15 @@ log(unicode(chunk)) self.SetConsoleTextAttribute(self.hout, attr.winattr) self.WriteConsoleW(self.hout, chunk, len(chunk), byref(junk), None) + return n + + def write_color(self, text, attr=None): + # Second WriteConsoleW() argument must fit as Unicode into 64kB + maxlen = 10000 + n = 0 + parts = [text[start:start+maxlen] for start in range(0, len(text), maxlen)] + for text in parts: + n += self.write_color_part(text, attr) return n