[ https://issues.apache.org/jira/browse/STDCXX-857?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Travis Vitek updated STDCXX-857: -------------------------------- Attachment: stdcxx-857.patch I feel confident in this patch, but I don't want to risk breaking like I did last weekend. I'm posting the patch for review, and I'll submit it Monday if someone else doesn't do it first. The simplification in {{_rw_bufcat()}} always allocates 4 guard bytes regardless of the max length of the buffer. Unless I'm sorely mistaken, the max length is intended to be the maximum number of characters allowed to be stored in the buffer, not the maximum allocated size. {noformat} 2008-04-11 Travis Vitek STDCXX-857 * tests/src/fmt_defs.h: Add flag to struct Buffer to indicate who owns the allocated buffer. * tests/src/printf.cpp (_rw_bufcat): Simplify logic to get new buffer size. Avoid checking guard bytes and deallocating buffer that we do not own and may not have guard bytes. (rw_vasnprintf): Set flag indicating that the caller owns the supplied buffer. (_rw_fmtarray): Ditto. (_rw_fmt_expr): Ditto. {noformat} > unexpected assertion from _rw_bufcat > ------------------------------------ > > Key: STDCXX-857 > URL: https://issues.apache.org/jira/browse/STDCXX-857 > Project: C++ Standard Library > Issue Type: Bug > Components: Test Driver > Affects Versions: 4.2.1 > Reporter: Travis Vitek > Assignee: Travis Vitek > Fix For: 4.2.1 > > Attachments: stdcxx-857.patch > > Original Estimate: 2h > Remaining Estimate: 2h > > Here is the assertion... > {noformat} > ..\..\..\tests\src\printf.cpp:486: char *__cdecl _rw_bufcat(struct Buffer &,const char *,unsigned int): Assertion '0 == memcmp (*buf.pbuf + *buf.pbufsize, guard, guardsize)' failed. > {noformat} > Here is a testcase... > {noformat} > #include > #include > #include > int main (int argc, char* argv[]) > { > const char* s = 1 < argc ? argv [1] : "bug-zapper"; > char buffer [4]; > char *buf = buffer; > size_t bufsize = sizeof buffer; > rw_asnprintf (&buf, &bufsize, "%s", s); > if (buf != buffer) > free (buf); > return 0; > } > {noformat} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.