Fix -fsanitize=signed-integer-overflow

...when std::clock_t is sufficiently small.  Though the formula used in
SwLayAction::CheckWaitCrsr does look odd...

Change-Id: Iee32350850be4a1896c5cb41eff748f0cb5382a2
This commit is contained in:
Stephan Bergmann
2014-10-29 12:23:43 +01:00
parent 4f5f6d2444
commit b9f080e012
2 changed files with 11 additions and 11 deletions

View File

@@ -18,6 +18,11 @@
*/
#ifndef INCLUDED_SW_SOURCE_CORE_INC_LAYACT_HXX
#define INCLUDED_SW_SOURCE_CORE_INC_LAYACT_HXX
#include <sal/config.h>
#include <ctime>
#include "swtypes.hxx"
#include "swrect.hxx"
@@ -62,7 +67,7 @@ class SwLayAction
// The InternalAction can then take the appropriate steps.
sal_uInt16 nPreInvaPage;
sal_uLong nStartTicks; // The Action's starting time; if too much time passes the
std::clock_t nStartTicks; // The Action's starting time; if too much time passes the
// WaitCrsr can be enabled via CheckWaitCrsr()
sal_uInt16 nInputType; // Which input should terminate processing
@@ -111,7 +116,7 @@ class SwLayAction
bool RemoveEmptyBrowserPages();
inline void CheckIdleEnd();
inline sal_uLong GetStartTicks() { return nStartTicks; }
inline std::clock_t GetStartTicks() { return nStartTicks; }
public:
SwLayAction( SwRootFrm *pRt, SwViewImp *pImp );

View File

@@ -19,7 +19,7 @@
#include <config_features.h>
#include <time.h>
#include <ctime>
#include "rootfrm.hxx"
#include "pagefrm.hxx"
#include "viewimp.hxx"
@@ -99,16 +99,11 @@ static void BreakPoint()
} \
}
inline sal_uLong Ticks()
{
return 1000 * clock() / CLOCKS_PER_SEC;
}
void SwLayAction::CheckWaitCrsr()
{
RESCHEDULE
if ( !IsWait() && IsWaitAllowed() && IsPaint() &&
((Ticks() - GetStartTicks()) >= CLOCKS_PER_SEC/2) )
((std::clock() - GetStartTicks()) * 1000 / CLOCKS_PER_SEC >= CLOCKS_PER_SEC/2) )
{
pWait = new SwWait( *pRoot->GetFmt()->GetDoc()->GetDocShell(), true );
}
@@ -288,7 +283,7 @@ SwLayAction::SwLayAction( SwRootFrm *pRt, SwViewImp *pI ) :
pOptTab( 0 ),
pWait( 0 ),
nPreInvaPage( USHRT_MAX ),
nStartTicks( Ticks() ),
nStartTicks( std::clock() ),
nInputType( 0 ),
nEndPage( USHRT_MAX ),
nCheckPageNum( USHRT_MAX )
@@ -313,7 +308,7 @@ SwLayAction::~SwLayAction()
void SwLayAction::Reset()
{
pOptTab = 0;
nStartTicks = Ticks();
nStartTicks = std::clock();
nInputType = 0;
nEndPage = nPreInvaPage = nCheckPageNum = USHRT_MAX;
bPaint = bComplete = bWaitAllowed = bCheckPages = true;