summaryrefslogtreecommitdiff
path: root/editeng
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2013-12-09 23:07:44 +0100
committerMichael Stahl <mstahl@redhat.com>2013-12-10 15:32:27 +0100
commit349bfa2a9a621e6e8041ffea847a76d7c7b114cc (patch)
tree0308cb6f0c8eae7d1029a03edf7cc8e29ee699e3 /editeng
parent9b498bb45b34a474b666107265896d69707472d1 (diff)
editeng: fix more 32-bit Time breakage
SfxDateTimeItem and SvxExtTimeField need to use 64-bit integer to store Time as well. These classes also have binary serialization Load()/Save() methods but they are unlikely to be used in a persistent way, just for the clipboard. The problem is easy to reproduce in Impress: Insert->Field->Time(fixed) (regression from 9830fd36dbdb72c79703b0c61efc027fba793c5a) Change-Id: I5946c5b94dd5a509805b6dc40461bbd910caffc4 (cherry picked from commit 7b9c61c7f20a679c5316a288c2ec2ffbf04b4200)
Diffstat (limited to 'editeng')
-rw-r--r--editeng/source/items/flditem.cxx12
-rw-r--r--editeng/source/uno/unofield.cxx2
2 files changed, 7 insertions, 7 deletions
diff --git a/editeng/source/items/flditem.cxx b/editeng/source/items/flditem.cxx
index 8eb506a90a49..972d8f58a653 100644
--- a/editeng/source/items/flditem.cxx
+++ b/editeng/source/items/flditem.cxx
@@ -756,8 +756,8 @@ SV_IMPL_PERSIST1( SvxExtTimeField, SvxFieldData );
//----------------------------------------------------------------------------
SvxExtTimeField::SvxExtTimeField()
+ : m_nFixTime( Time(Time::SYSTEM).GetTime() )
{
- nFixTime = Time( Time::SYSTEM ).GetTime();
eType = SVXTIMETYPE_VAR;
eFormat = SVXTIMEFORMAT_STANDARD;
}
@@ -765,8 +765,8 @@ SvxExtTimeField::SvxExtTimeField()
//----------------------------------------------------------------------------
SvxExtTimeField::SvxExtTimeField( const Time& rTime, SvxTimeType eT, SvxTimeFormat eF )
+ : m_nFixTime( rTime.GetTime() )
{
- nFixTime = rTime.GetTime();
eType = eT;
eFormat = eF;
}
@@ -786,7 +786,7 @@ int SvxExtTimeField::operator==( const SvxFieldData& rOther ) const
return sal_False;
const SvxExtTimeField& rOtherFld = (const SvxExtTimeField&) rOther;
- return ( ( nFixTime == rOtherFld.nFixTime ) &&
+ return ((m_nFixTime == rOtherFld.m_nFixTime) &&
( eType == rOtherFld.eType ) &&
( eFormat == rOtherFld.eFormat ) );
}
@@ -797,7 +797,7 @@ void SvxExtTimeField::Load( SvPersistStream & rStm )
{
sal_uInt16 nType, nFormat;
- rStm >> nFixTime;
+ rStm.ReadInt64(m_nFixTime);
rStm >> nType;
rStm >> nFormat;
@@ -809,7 +809,7 @@ void SvxExtTimeField::Load( SvPersistStream & rStm )
void SvxExtTimeField::Save( SvPersistStream & rStm )
{
- rStm << nFixTime;
+ rStm.WriteInt64(m_nFixTime);
rStm << (sal_uInt16) eType;
rStm << (sal_uInt16) eFormat;
}
@@ -820,7 +820,7 @@ OUString SvxExtTimeField::GetFormatted( SvNumberFormatter& rFormatter, LanguageT
{
Time aTime( Time::EMPTY );
if ( eType == SVXTIMETYPE_FIX )
- aTime.SetTime( nFixTime );
+ aTime.SetTime(m_nFixTime);
else
aTime = Time( Time::SYSTEM ); // current time
return GetFormatted( aTime, eFormat, rFormatter, eLang );
diff --git a/editeng/source/uno/unofield.cxx b/editeng/source/uno/unofield.cxx
index 13699a6d7d13..0f40c3858222 100644
--- a/editeng/source/uno/unofield.cxx
+++ b/editeng/source/uno/unofield.cxx
@@ -196,7 +196,7 @@ inline Date setDate( util::DateTime& rDate )
return Date( rDate.Day, rDate.Month, rDate.Year );
}
-static util::DateTime getTime( long nTime )
+static util::DateTime getTime(sal_Int64 const nTime)
{
util::DateTime aTime;
memset( &aTime, 0, sizeof( util::DateTime ) );