You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by "Martin Sebor (JIRA)" <ji...@apache.org> on 2007/01/05 21:28:27 UTC
[jira] Assigned: (STDCXX-314) std::valarray unary operators use
uninitialized storage
[ https://issues.apache.org/jira/browse/STDCXX-314?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Sebor reassigned STDCXX-314:
-----------------------------------
Assignee: Martin Sebor
> std::valarray unary operators use uninitialized storage
> -------------------------------------------------------
>
> Key: STDCXX-314
> URL: https://issues.apache.org/jira/browse/STDCXX-314
> Project: C++ Standard Library
> Issue Type: Bug
> Components: 26. Numerics
> Affects Versions: 4.1.3, 4.1.2
> Environment: all
> Reporter: Martin Sebor
> Assigned To: Martin Sebor
> Fix For: 4.2
>
>
> The program below is designed to detect memory corruption (such as the use of uninitialized storage) in valarray. When compiled with the latest trunk it aborts at runtime.
> $ cat t.cpp && make t && ./t
> #include <cassert>
> #include <valarray>
> struct S {
> const S* const self;
> S (): self (this) { }
> S (const S &s): self (this) { assert (&s == s.self); }
> ~S () { assert (this == self); }
> S operator+ () const { assert (this == self); return *this; }
> S operator- () const { assert (this == self); return *this; }
> S operator~ () const { assert (this == self); return *this; }
> bool operator! () const { assert (this == self); return false; }
> void operator= (const S &s) { assert (this == self && &s == s.self); }
> };
> int main ()
> {
> const std::valarray<S> a (2);
> +a;
> -a;
> ~a;
> !a;
> }
> gcc -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG -D_RWSTD_USE_CONFIG -I/build/sebor/dev/stdlib/include -I/build/sebor/gcc-4.1.0-11s/include -I/build/sebor/dev/stdlib/examples/include -pedantic -nostdinc++ -g -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long t.cpp
> gcc t.o -o t -L/build/sebor/gcc-4.1.0-11s/lib -lstd11s -lsupc++ -lm
> Assertion failed: this == self && &s == s.self, file t.cpp, line 15
> Abort (core dumped)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira