# HG changeset patch # User Chris Cannam # Date 1237221122 0 # Node ID 8688430850d6c1063eb5d5f5cd5fd3d124e9c239 # Parent 2d551c765d5182dd9766db7ddceefee5f1a0fc30 * either I'm going mad or the compiler is... valgrind and sizeof both seem to think that reading or writing m_size is reading beyond the end of the object, unless I add m_spare padding... why? diff -r 2d551c765d51 -r 8688430850d6 base/RingBuffer.h --- a/base/RingBuffer.h Mon Mar 16 13:56:11 2009 +0000 +++ b/base/RingBuffer.h Mon Mar 16 16:32:02 2009 +0000 @@ -165,6 +165,7 @@ size_t m_writer; size_t *m_readers; size_t m_size; + size_t m_spare; static Scavenger > m_scavenger; @@ -187,9 +188,16 @@ #ifdef DEBUG_RINGBUFFER std::cerr << "RingBuffer[" << this << "]::RingBuffer(" << n << ")" << std::endl; #endif +/* + std::cerr << "note: sizeof(RingBuffer = " << sizeof(RingBuffer) << ")" << std::endl; - std::cerr << "note: sizeof(RingBuffer = " << sizeof(RingBuffer) << std::endl; - + std::cerr << "this = " << this << std::endl; + std::cerr << "&m_buffer = " << &m_buffer << std::endl; + std::cerr << "&m_mlocked = " << &m_mlocked << std::endl; + std::cerr << "&m_writer = " << &m_writer << std::endl; + std::cerr << "&m_readers = " << &m_readers << std::endl; + std::cerr << "&m_size = " << &m_size << std::endl; +*/ for (int i = 0; i < N; ++i) m_readers[i] = 0; m_scavenger.scavenge();