errorCode = processor(parser, start, parseEndPtr = bufferEnd, isFinal ? (const char **)NULL : &bufferPtr); if (errorCode == XML_ERROR_NONE) { if (!isFinal) { XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); positionPtr = bufferPtr; } return XML_STATUS_OK; }  else if (errorCode == XML_ERROR_SUSPENDED) { int unparsed = bufferEnd - eventEndPtr; bufferPtr = eventPtr; parseEndPtr = eventEndPtr; bufferEnd -= unparsed;  parseEndByteIndex -= unparsed; XmlUpdatePosition(encoding, positionPtr, eventEndPtr, &position); return XML_STATUS_ERROR; }  else {
finalBuffer = (XML_Bool)isFinal;  errorCode = processor(parser, start, parseEndPtr, &bufferPtr);  if (errorCode != XML_ERROR_NONE) {
XML_ParseBuffer(XML_Parser parser, int len, int isFinal){  const char *start = bufferPtr;  positionPtr = start;  bufferEnd += len;  parseEndByteIndex += len;  errorCode = processor(parser, start, parseEndPtr = bufferEnd,                        isFinal ? (const char **)NULL : &bufferPtr);  if (errorCode == XML_ERROR_NONE) {    if (!isFinal) {      XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position);      positionPtr = bufferPtr;    }    return XML_STATUS_OK;  }/* BEGIN MOZILLA CHANGE (Blocking parser) */  else if (errorCode == XML_ERROR_SUSPENDED) {    int unparsed = bufferEnd - eventEndPtr;    bufferPtr = eventPtr;    parseEndPtr = eventEndPtr;    bufferEnd -= unparsed; /* Substract what we haven't parsed */    parseEndByteIndex -= unparsed;    XmlUpdatePosition(encoding, positionPtr, eventEndPtr, &position);    return XML_STATUS_ERROR;  }/* END MOZILLA CHANGE */  else {    eventEndPtr = eventPtr;    processor = errorProcessor;    return XML_STATUS_ERROR;  }}