stdcxx-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Travis Vitek (JIRA)" <j...@apache.org>
Subject [jira] Updated: (STDCXX-857) unexpected assertion from _rw_bufcat
Date Sat, 12 Apr 2008 02:17:04 GMT

     [ 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  <vitek@roguewave.com>

	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 <rw_printf.h>
> #include <string.h>
> #include <stdlib.h>
> 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.


Mime
View raw message