Ticket #6626: patchfile.patch

File patchfile.patch, 1.1 KB (added by Guillermo Ruiz Troyano <ruiztroyano@…>, 11 years ago)

Patch of boost::numeric::ublas::shallow_array_adaptor::swap

  • storage.hpp

     
    801801            return *this;
    802802        }
    803803
    804         // Swapping
    805         BOOST_UBLAS_INLINE
    806         void swap (shallow_array_adaptor &a) {
    807             if (this != &a) {
    808                 std::swap (size_, a.size_);
    809                 std::swap (own_, a.own_);
    810                 std::swap (data_, a.data_);
     804         // Swapping
     805         BOOST_UBLAS_INLINE
     806         void swap (shallow_array_adaptor& a) {
     807            if (own_ && a.own_) {
     808                if (this != &a) {
     809                    std::swap (size_, a.size_);
     810                    std::swap (own_, a.own_);
     811                    std::swap (data_, a.data_);
     812                }
    811813            }
     814            else if (data_.get () != a.data_.get ())
     815                std::swap_ranges (data_, data_+size_, a.data_);
    812816        }
    813817        BOOST_UBLAS_INLINE
    814818        friend void swap (shallow_array_adaptor &a1, shallow_array_adaptor &a2) {
     
    19171921
    19181922}}}
    19191923
    1920 #endif
     1924#endif
     1925 No newline at end of file