Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
4.1.2, 4.1.3
-
None
-
all
Description
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 && nice gmake t && ./t
#include <cassert>
#include <valarray>
struct S {
const S* const self;
S (): self (this) { }
S (const S &s): self (this)
~S ()
{ assert (this == self); }void operator= (const S &s)
{ assert (this == self && &s == s.self); }};
int main ()
{
const std::valarray<S> a (2);
a.cshift (1);
}
aCC -c -I/nfs/devco/sebor/dev/stdlib/include/ansi -I/usr/include -D_RWSTDDEBUG -mt -D_RWSTD_USE_CONFIG -I/nfs/devco/sebor/dev/stdlib/include -I/build/sebor/aCC-3.70-15S/include -I/nfs/devco/sebor/dev/stdlib/examples/include -Aa +nostl -g +d +DD64 +w +W392 +W655 +W684 +W818 +W819 +W849 t.cpp
aCC t.o -o t -Aa +nostl -Wl,+s -Wl,+vnocompatwarnings -mt +DD64 -L/build/sebor/aCC-3.70-15S/lib -lstd15S -lm
Assertion failed: this == self && &s == s.self, file t.cpp, line 10
ABORT instruction (core dumped)