Uploaded image for project: 'C++ Standard Library'
  1. C++ Standard Library
  2. STDCXX-314

std::valarray unary operators use uninitialized storage

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Cannot Reproduce
    • None
    • 4.2.0
    • 26. Numerics
    • None
    • all

    • Runtime Error

    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 && 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)

      Attachments

        Issue Links

          Activity

            People

              sebor Martin Sebor
              sebor Martin Sebor
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: