diff options
author | Michael Stahl <mstahl@redhat.com> | 2013-12-09 23:07:44 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2013-12-10 15:32:27 +0100 |
commit | 349bfa2a9a621e6e8041ffea847a76d7c7b114cc (patch) | |
tree | 0308cb6f0c8eae7d1029a03edf7cc8e29ee699e3 /editeng | |
parent | 9b498bb45b34a474b666107265896d69707472d1 (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.cxx | 12 | ||||
-rw-r--r-- | editeng/source/uno/unofield.cxx | 2 |
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 ) ); |