| 26023 | } |
| 26024 | |
| 26025 | function checkBufferLength (parser) { |
| 26026 | var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10) |
| 26027 | var maxActual = 0 |
| 26028 | for (var i = 0, l = buffers.length; i < l; i++) { |
| 26029 | var len = parser[buffers[i]].length |
| 26030 | if (len > maxAllowed) { |
| 26031 | // Text/cdata nodes can get big, and since they're buffered, |
| 26032 | // we can get here under normal conditions. |
| 26033 | // Avoid issues by emitting the text node now, |
| 26034 | // so at least it won't get any bigger. |
| 26035 | switch (buffers[i]) { |
| 26036 | case 'textNode': |
| 26037 | closeText(parser) |
| 26038 | break |
| 26039 | |
| 26040 | case 'cdata': |
| 26041 | emitNode(parser, 'oncdata', parser.cdata) |
| 26042 | parser.cdata = '' |
| 26043 | break |
| 26044 | |
| 26045 | case 'script': |
| 26046 | emitNode(parser, 'onscript', parser.script) |
| 26047 | parser.script = '' |
| 26048 | break |
| 26049 | |
| 26050 | default: |
| 26051 | error(parser, 'Max buffer length exceeded: ' + buffers[i]) |
| 26052 | } |
| 26053 | } |
| 26054 | maxActual = Math.max(maxActual, len) |
| 26055 | } |
| 26056 | // schedule the next check for the earliest possible buffer overrun. |
| 26057 | var m = sax.MAX_BUFFER_LENGTH - maxActual |
| 26058 | parser.bufferCheckPosition = m + parser.position |
| 26059 | } |
| 26060 | |
| 26061 | function clearBuffers (parser) { |
| 26062 | for (var i = 0, l = buffers.length; i < l; i++) { |