The bufferSize variable in BodyContentImpl is declared as an int.  This
results in an integer overflow very quickly for even moderately big output.
(Think displaying the results of a SQL table as a HTML table).  I imagine
that the ultimate solution will be to declare it as a long, but in the mean
time...
*** BodyContentImpl.java.orig   Tue Apr  3 16:46:37 2001
--- BodyContentImpl.java        Tue Apr  3 16:47:15 2001
***************
*** 110,119 ****
          char[] tmp = null;

        //XXX Should it be multiple of DEFAULT_BUFFER_SIZE??
!
        if (len <= Constants.DEFAULT_BUFFER_SIZE) {
            tmp = new char [bufferSize + Constants.DEFAULT_BUFFER_SIZE];
!           bufferSize = bufferSize * 2;
        } else {
            tmp = new char [bufferSize + len];
            bufferSize += len;
--- 110,119 ----
          char[] tmp = null;

        //XXX Should it be multiple of DEFAULT_BUFFER_SIZE??
!         len += Constants.DEFAULT_BUFFER_SIZE -
(len%Constants.DEFAULT_BUFFER_SIZE);
        if (len <= Constants.DEFAULT_BUFFER_SIZE) {
            tmp = new char [bufferSize + Constants.DEFAULT_BUFFER_SIZE];
!             bufferSize += Constants.DEFAULT_BUFFER_SIZE;
        } else {
            tmp = new char [bufferSize + len];
            bufferSize += len;


Reply via email to