add: if ( boundaryStart < mString.size() && mString[boundaryStart] != '-' ) mPreamble += DW_EOL;
context: int DwBodyParser::Parse(){    DeleteParts();    // Find the preamble    size_t pos = 0;    size_t boundaryStart, boundaryEnd, isFinal;    int result;    result = FindBoundary(pos, &boundaryStart, &boundaryEnd, &isFinal);    if (result == kParseFail) {        mPreamble = mEpilogue = "";        mFirstBodyPartStr = 0;        return kParseFail;    }    int start = pos;    int len = boundaryStart - pos;    mPreamble = mString.substr(start, len);    // Find the body parts    pos = boundaryEnd;    while (1) {        result = FindBoundary(pos, &boundaryStart, &boundaryEnd, &isFinal);        // NOTE: For enhanced fault tolerance we *accept* a missing last        //       boundary.        //       If no last boundary is found (but at leat a first one was        //       there) we just assume the end of the text ebing the end        //       of the last part.        //       By doing so we can safely parse some buggy MS Outlook        //       clients' messages.                      (khz, 12.06.2002)        start = pos;                if (result == kParseFail) {            isFinal = true;            len = mString.length() - pos;        } else {            len = boundaryStart - pos;        }                AddPart(start, len);                if (result == kParseFail) {            pos = mString.length();        } else {            pos = boundaryEnd;        }                if (isFinal) {            break;        }    }    // Find the epilogue    start = pos;    len = mString.length() - pos;    if( len )        mEpilogue = mString.substr(start, len);    return kParseSuccess;}