Hi, Please find the latest report on new defect(s) introduced to LibreOffice found with Coverity Scan.
5 new defect(s) introduced to LibreOffice found with Coverity Scan. 1 defect(s), reported by Coverity Scan earlier, were marked fixed in the recent build analyzed by Coverity Scan. New defect(s) Reported-by: Coverity Scan Showing 5 of 5 defect(s) ** CID 1256663: Same on both sides (CONSTANT_EXPRESSION_RESULT) /sw/inc/ring.hxx: 186 in sw::RingIterator<SwPaM>::equal(const sw::RingIterator<SwPaM>&) const() /sw/inc/ring.hxx: 186 in sw::RingIterator<SwViewShell>::equal(const sw::RingIterator<SwViewShell>&) const() /sw/inc/ring.hxx: 186 in sw::RingIterator<const SwPaM>::equal(const sw::RingIterator<const SwPaM>&) const() /sw/inc/ring.hxx: 186 in sw::RingIterator<const SwViewShell>::equal(const sw::RingIterator<const SwViewShell>&) const() /sw/inc/ring.hxx: 186 in sw::RingIterator<const <unnamed>::TestRing>::equal(const sw::RingIterator<const <unnamed>::TestRing>&) const() /sw/inc/ring.hxx: 186 in sw::RingIterator<<unnamed>::TestRing>::equal(const sw::RingIterator<<unnamed>::TestRing>&) const() ** CID 1256665: Division or modulo by float zero (DIVIDE_BY_ZERO) /vcl/opengl/program.cxx: 223 in OpenGLProgram::SetTransform(const rtl::OString &, const OpenGLTexture &, const basegfx::B2DPoint &, const basegfx::B2DPoint &, const basegfx::B2DPoint &)() /vcl/opengl/program.cxx: 223 in OpenGLProgram::SetTransform(const rtl::OString &, const OpenGLTexture &, const basegfx::B2DPoint &, const basegfx::B2DPoint &, const basegfx::B2DPoint &)() ** CID 1256664: Division or modulo by float zero (DIVIDE_BY_ZERO) /vcl/opengl/program.cxx: 223 in OpenGLProgram::SetTransform(const rtl::OString &, const OpenGLTexture &, const basegfx::B2DPoint &, const basegfx::B2DPoint &, const basegfx::B2DPoint &)() /vcl/opengl/program.cxx: 223 in OpenGLProgram::SetTransform(const rtl::OString &, const OpenGLTexture &, const basegfx::B2DPoint &, const basegfx::B2DPoint &, const basegfx::B2DPoint &)() ** CID 1256669: Uninitialized pointer field (UNINIT_CTOR) /sw/inc/ring.hxx: 62 in sw::Ring<SwViewShell>::Ring()() /sw/inc/ring.hxx: 62 in sw::Ring<<unnamed>::TestRing>::Ring()() ** CID 1256668: Uninitialized pointer field (UNINIT_CTOR) /sw/inc/ring.hxx: 112 in sw::Ring<SwPaM>::Ring(SwPaM *)() /sw/inc/ring.hxx: 112 in sw::Ring<_SaveMergeRedlines>::Ring(_SaveMergeRedlines *)() /sw/inc/ring.hxx: 112 in sw::Ring<SwViewShell>::Ring(SwViewShell *)() ________________________________________________________________________________________________________ *** CID 1256663: Same on both sides (CONSTANT_EXPRESSION_RESULT) /sw/inc/ring.hxx: 186 in sw::RingIterator<SwPaM>::equal(const sw::RingIterator<SwPaM>&) const() 180 } 181 private: 182 friend class boost::iterator_core_access; 183 void increment() 184 { m_pCurrent = m_pCurrent ? m_pCurrent->GetNext() : m_pStart->GetNext(); } 185 bool equal(RingIterator const& other) const >>> CID 1256663: Same on both sides (CONSTANT_EXPRESSION_RESULT) >>> "this->m_pStart == this->m_pStart" is always true regardless of the >>> values of its operands because those operands are identical. This occurs as >>> the logical second operand of '&&'. 186 { return m_pCurrent == other.m_pCurrent && m_pStart == m_pStart; } 187 T& dereference() const 188 { return m_pCurrent ? *m_pCurrent : * m_pStart; } 189 T* m_pCurrent; 190 T* m_pStart; 191 }; /sw/inc/ring.hxx: 186 in sw::RingIterator<SwViewShell>::equal(const sw::RingIterator<SwViewShell>&) const() 180 } 181 private: 182 friend class boost::iterator_core_access; 183 void increment() 184 { m_pCurrent = m_pCurrent ? m_pCurrent->GetNext() : m_pStart->GetNext(); } 185 bool equal(RingIterator const& other) const >>> CID 1256663: Same on both sides (CONSTANT_EXPRESSION_RESULT) >>> "this->m_pStart == this->m_pStart" is always true regardless of the >>> values of its operands because those operands are identical. This occurs as >>> the logical second operand of '&&'. 186 { return m_pCurrent == other.m_pCurrent && m_pStart == m_pStart; } 187 T& dereference() const 188 { return m_pCurrent ? *m_pCurrent : * m_pStart; } 189 T* m_pCurrent; 190 T* m_pStart; 191 }; /sw/inc/ring.hxx: 186 in sw::RingIterator<const SwPaM>::equal(const sw::RingIterator<const SwPaM>&) const() 180 } 181 private: 182 friend class boost::iterator_core_access; 183 void increment() 184 { m_pCurrent = m_pCurrent ? m_pCurrent->GetNext() : m_pStart->GetNext(); } 185 bool equal(RingIterator const& other) const >>> CID 1256663: Same on both sides (CONSTANT_EXPRESSION_RESULT) >>> "this->m_pStart == this->m_pStart" is always true regardless of the >>> values of its operands because those operands are identical. This occurs as >>> the logical second operand of '&&'. 186 { return m_pCurrent == other.m_pCurrent && m_pStart == m_pStart; } 187 T& dereference() const 188 { return m_pCurrent ? *m_pCurrent : * m_pStart; } 189 T* m_pCurrent; 190 T* m_pStart; 191 }; /sw/inc/ring.hxx: 186 in sw::RingIterator<const SwViewShell>::equal(const sw::RingIterator<const SwViewShell>&) const() 180 } 181 private: 182 friend class boost::iterator_core_access; 183 void increment() 184 { m_pCurrent = m_pCurrent ? m_pCurrent->GetNext() : m_pStart->GetNext(); } 185 bool equal(RingIterator const& other) const >>> CID 1256663: Same on both sides (CONSTANT_EXPRESSION_RESULT) >>> "this->m_pStart == this->m_pStart" is always true regardless of the >>> values of its operands because those operands are identical. This occurs as >>> the logical second operand of '&&'. 186 { return m_pCurrent == other.m_pCurrent && m_pStart == m_pStart; } 187 T& dereference() const 188 { return m_pCurrent ? *m_pCurrent : * m_pStart; } 189 T* m_pCurrent; 190 T* m_pStart; 191 }; /sw/inc/ring.hxx: 186 in sw::RingIterator<const <unnamed>::TestRing>::equal(const sw::RingIterator<const <unnamed>::TestRing>&) const() 180 } 181 private: 182 friend class boost::iterator_core_access; 183 void increment() 184 { m_pCurrent = m_pCurrent ? m_pCurrent->GetNext() : m_pStart->GetNext(); } 185 bool equal(RingIterator const& other) const >>> CID 1256663: Same on both sides (CONSTANT_EXPRESSION_RESULT) >>> "this->m_pStart == this->m_pStart" is always true regardless of the >>> values of its operands because those operands are identical. This occurs as >>> the logical second operand of '&&'. 186 { return m_pCurrent == other.m_pCurrent && m_pStart == m_pStart; } 187 T& dereference() const 188 { return m_pCurrent ? *m_pCurrent : * m_pStart; } 189 T* m_pCurrent; 190 T* m_pStart; 191 }; /sw/inc/ring.hxx: 186 in sw::RingIterator<<unnamed>::TestRing>::equal(const sw::RingIterator<<unnamed>::TestRing>&) const() 180 } 181 private: 182 friend class boost::iterator_core_access; 183 void increment() 184 { m_pCurrent = m_pCurrent ? m_pCurrent->GetNext() : m_pStart->GetNext(); } 185 bool equal(RingIterator const& other) const >>> CID 1256663: Same on both sides (CONSTANT_EXPRESSION_RESULT) >>> "this->m_pStart == this->m_pStart" is always true regardless of the >>> values of its operands because those operands are identical. This occurs as >>> the logical second operand of '&&'. 186 { return m_pCurrent == other.m_pCurrent && m_pStart == m_pStart; } 187 T& dereference() const 188 { return m_pCurrent ? *m_pCurrent : * m_pStart; } 189 T* m_pCurrent; 190 T* m_pStart; 191 }; ________________________________________________________________________________________________________ *** CID 1256665: Division or modulo by float zero (DIVIDE_BY_ZERO) /vcl/opengl/program.cxx: 223 in OpenGLProgram::SetTransform(const rtl::OString &, const OpenGLTexture &, const basegfx::B2DPoint &, const basegfx::B2DPoint &, const basegfx::B2DPoint &)() 217 const basegfx::B2DPoint& rX, 218 const basegfx::B2DPoint& rY ) 219 { 220 GLuint nUniform = GetUniformLocation( rName ); 221 const basegfx::B2DVector aXRel = rX - rNull; 222 const basegfx::B2DVector aYRel = rY - rNull; >>> CID 1256665: Division or modulo by float zero (DIVIDE_BY_ZERO) >>> In expression "(float)aYRel.getY() / rTexture->GetHeight()", division >>> by expression "rTexture->GetHeight()" which may be zero has undefined >>> behavior. 223 const float aValues[] = { 224 (float) aXRel.getX()/rTexture.GetWidth(), (float) aXRel.getY()/rTexture.GetWidth(), 0, 0, 225 (float) aYRel.getX()/rTexture.GetHeight(), (float) aYRel.getY()/rTexture.GetHeight(), 0, 0, 226 0, 0, 1, 0, 227 (float) rNull.getX(), (float) rNull.getY(), 0, 1 }; 228 glm::mat4 mMatrix = glm::make_mat4( aValues ); /vcl/opengl/program.cxx: 223 in OpenGLProgram::SetTransform(const rtl::OString &, const OpenGLTexture &, const basegfx::B2DPoint &, const basegfx::B2DPoint &, const basegfx::B2DPoint &)() 217 const basegfx::B2DPoint& rX, 218 const basegfx::B2DPoint& rY ) 219 { 220 GLuint nUniform = GetUniformLocation( rName ); 221 const basegfx::B2DVector aXRel = rX - rNull; 222 const basegfx::B2DVector aYRel = rY - rNull; >>> CID 1256665: Division or modulo by float zero (DIVIDE_BY_ZERO) >>> In expression "(float)aYRel.getX() / rTexture->GetHeight()", division >>> by expression "rTexture->GetHeight()" which may be zero has undefined >>> behavior. 223 const float aValues[] = { 224 (float) aXRel.getX()/rTexture.GetWidth(), (float) aXRel.getY()/rTexture.GetWidth(), 0, 0, 225 (float) aYRel.getX()/rTexture.GetHeight(), (float) aYRel.getY()/rTexture.GetHeight(), 0, 0, 226 0, 0, 1, 0, 227 (float) rNull.getX(), (float) rNull.getY(), 0, 1 }; 228 glm::mat4 mMatrix = glm::make_mat4( aValues ); ________________________________________________________________________________________________________ *** CID 1256664: Division or modulo by float zero (DIVIDE_BY_ZERO) /vcl/opengl/program.cxx: 223 in OpenGLProgram::SetTransform(const rtl::OString &, const OpenGLTexture &, const basegfx::B2DPoint &, const basegfx::B2DPoint &, const basegfx::B2DPoint &)() 217 const basegfx::B2DPoint& rX, 218 const basegfx::B2DPoint& rY ) 219 { 220 GLuint nUniform = GetUniformLocation( rName ); 221 const basegfx::B2DVector aXRel = rX - rNull; 222 const basegfx::B2DVector aYRel = rY - rNull; >>> CID 1256664: Division or modulo by float zero (DIVIDE_BY_ZERO) >>> In expression "(float)aXRel.getY() / rTexture->GetWidth()", division by >>> expression "rTexture->GetWidth()" which may be zero has undefined behavior. 223 const float aValues[] = { 224 (float) aXRel.getX()/rTexture.GetWidth(), (float) aXRel.getY()/rTexture.GetWidth(), 0, 0, 225 (float) aYRel.getX()/rTexture.GetHeight(), (float) aYRel.getY()/rTexture.GetHeight(), 0, 0, 226 0, 0, 1, 0, 227 (float) rNull.getX(), (float) rNull.getY(), 0, 1 }; 228 glm::mat4 mMatrix = glm::make_mat4( aValues ); /vcl/opengl/program.cxx: 223 in OpenGLProgram::SetTransform(const rtl::OString &, const OpenGLTexture &, const basegfx::B2DPoint &, const basegfx::B2DPoint &, const basegfx::B2DPoint &)() 217 const basegfx::B2DPoint& rX, 218 const basegfx::B2DPoint& rY ) 219 { 220 GLuint nUniform = GetUniformLocation( rName ); 221 const basegfx::B2DVector aXRel = rX - rNull; 222 const basegfx::B2DVector aYRel = rY - rNull; >>> CID 1256664: Division or modulo by float zero (DIVIDE_BY_ZERO) >>> In expression "(float)aXRel.getX() / rTexture->GetWidth()", division by >>> expression "rTexture->GetWidth()" which may be zero has undefined behavior. 223 const float aValues[] = { 224 (float) aXRel.getX()/rTexture.GetWidth(), (float) aXRel.getY()/rTexture.GetWidth(), 0, 0, 225 (float) aYRel.getX()/rTexture.GetHeight(), (float) aYRel.getY()/rTexture.GetHeight(), 0, 0, 226 0, 0, 1, 0, 227 (float) rNull.getX(), (float) rNull.getY(), 0, 1 }; 228 glm::mat4 mMatrix = glm::make_mat4( aValues ); ________________________________________________________________________________________________________ *** CID 1256669: Uninitialized pointer field (UNINIT_CTOR) /sw/inc/ring.hxx: 62 in sw::Ring<SwViewShell>::Ring()() 56 /** 57 * Creates a new item in a ring container all by itself. 58 * Note: Ring instances can newer be outside a container. At most, they 59 * are alone in one. 60 */ 61 Ring() >>> CID 1256669: Uninitialized pointer field (UNINIT_CTOR) >>> Non-static class member "pPrev" is not initialized in this constructor >>> nor in any functions that it calls. 62 { algo::init_header(static_cast< T* >(this)); } 63 /** 64 * Creates a new item and add it to an existing ring container. 65 * Note: the newly created item will be inserted just before item pRing. 66 * @param pRing ring container to add the created item to 67 */ /sw/inc/ring.hxx: 62 in sw::Ring<<unnamed>::TestRing>::Ring()() 56 /** 57 * Creates a new item in a ring container all by itself. 58 * Note: Ring instances can newer be outside a container. At most, they 59 * are alone in one. 60 */ 61 Ring() >>> CID 1256669: Uninitialized pointer field (UNINIT_CTOR) >>> Non-static class member "pPrev" is not initialized in this constructor >>> nor in any functions that it calls. 62 { algo::init_header(static_cast< T* >(this)); } 63 /** 64 * Creates a new item and add it to an existing ring container. 65 * Note: the newly created item will be inserted just before item pRing. 66 * @param pRing ring container to add the created item to 67 */ ________________________________________________________________________________________________________ *** CID 1256668: Uninitialized pointer field (UNINIT_CTOR) /sw/inc/ring.hxx: 112 in sw::Ring<SwPaM>::Ring(SwPaM *)() 106 { 107 T* pThis = static_cast< T* >(this); 108 if( !pObj ) 109 algo::init_header(pThis); 110 else 111 algo::link_before(pObj, pThis); >>> CID 1256668: Uninitialized pointer field (UNINIT_CTOR) >>> Non-static class member "pPrev" is not initialized in this constructor >>> nor in any functions that it calls. 112 } 113 114 template <class T> 115 inline void Ring<T>::MoveTo(T* pDestRing) 116 { 117 T* pThis = static_cast< T* >(this); /sw/inc/ring.hxx: 112 in sw::Ring<_SaveMergeRedlines>::Ring(_SaveMergeRedlines *)() 106 { 107 T* pThis = static_cast< T* >(this); 108 if( !pObj ) 109 algo::init_header(pThis); 110 else 111 algo::link_before(pObj, pThis); >>> CID 1256668: Uninitialized pointer field (UNINIT_CTOR) >>> Non-static class member "pPrev" is not initialized in this constructor >>> nor in any functions that it calls. 112 } 113 114 template <class T> 115 inline void Ring<T>::MoveTo(T* pDestRing) 116 { 117 T* pThis = static_cast< T* >(this); /sw/inc/ring.hxx: 112 in sw::Ring<SwViewShell>::Ring(SwViewShell *)() 106 { 107 T* pThis = static_cast< T* >(this); 108 if( !pObj ) 109 algo::init_header(pThis); 110 else 111 algo::link_before(pObj, pThis); >>> CID 1256668: Uninitialized pointer field (UNINIT_CTOR) >>> Non-static class member "pPrev" is not initialized in this constructor >>> nor in any functions that it calls. 112 } 113 114 template <class T> 115 inline void Ring<T>::MoveTo(T* pDestRing) 116 { 117 T* pThis = static_cast< T* >(this); ________________________________________________________________________________________________________ To view the defects in Coverity Scan visit, http://scan.coverity.com/projects/211?tab=overview To manage Coverity Scan email notifications for "libreoffice@lists.freedesktop.org", click http://scan.coverity.com/subscriptions/edit?email=libreoffice%40lists.freedesktop.org&token=d6481d718a775246b2340f282ebe5939 . _______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice