[Libreoffice-commits] core.git: Branch 'libreoffice-4-1' - editeng/source include/editeng svl/source
Michael Stahl
mstahl at redhat.com
Tue Dec 10 07:25:27 PST 2013
editeng/source/items/flditem.cxx | 12 ++++++------
editeng/source/uno/unofield.cxx | 2 +-
include/editeng/flditem.hxx | 6 +++---
svl/source/items/dateitem.cxx | 6 +++---
4 files changed, 13 insertions(+), 13 deletions(-)
New commits:
commit 5ee9dca1ca655dbe8fa0a8cc98853aacc2d6a7ce
Author: Michael Stahl <mstahl at redhat.com>
Date: Mon Dec 9 23:07:44 2013 +0100
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)
Reviewed-on: https://gerrit.libreoffice.org/7021
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/editeng/source/items/flditem.cxx b/editeng/source/items/flditem.cxx
index bc67903..af68b53 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 86a039b..ab0d883 100644
--- a/editeng/source/uno/unofield.cxx
+++ b/editeng/source/uno/unofield.cxx
@@ -201,7 +201,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 ) );
diff --git a/include/editeng/flditem.hxx b/include/editeng/flditem.hxx
index 37f42a3..7cf8df2 100644
--- a/include/editeng/flditem.hxx
+++ b/include/editeng/flditem.hxx
@@ -257,7 +257,7 @@ enum SvxTimeFormat { SVXTIMEFORMAT_APPDEFAULT = 0, // Set as in App
class EDITENG_DLLPUBLIC SvxExtTimeField : public SvxFieldData
{
private:
- sal_uInt32 nFixTime;
+ sal_Int64 m_nFixTime;
SvxTimeType eType;
SvxTimeFormat eFormat;
@@ -268,8 +268,8 @@ public:
SvxTimeType eType = SVXTIMETYPE_VAR,
SvxTimeFormat eFormat = SVXTIMEFORMAT_STANDARD );
- sal_uInt32 GetFixTime() const { return nFixTime; }
- void SetFixTime( const Time& rTime ) { nFixTime = rTime.GetTime(); }
+ sal_Int64 GetFixTime() const { return m_nFixTime; }
+ void SetFixTime( const Time& rTime ) { m_nFixTime = rTime.GetTime(); }
SvxTimeType GetType() const { return eType; }
void SetType( SvxTimeType eTp ) { eType = eTp; }
diff --git a/svl/source/items/dateitem.cxx b/svl/source/items/dateitem.cxx
index be60173..fa55117 100644
--- a/svl/source/items/dateitem.cxx
+++ b/svl/source/items/dateitem.cxx
@@ -90,9 +90,9 @@ SfxPoolItem* SfxDateTimeItem::Create( SvStream& rStream, sal_uInt16 ) const
{
DBG_CHKTHIS(SfxDateTimeItem, 0);
sal_uInt32 nDate = 0;
- sal_Int32 nTime = 0;
+ sal_Int64 nTime = 0;
rStream >> nDate;
- rStream >> nTime;
+ rStream.ReadInt64(nTime);
DateTime aDT(nDate, nTime);
return new SfxDateTimeItem( Which(), aDT );
}
@@ -103,7 +103,7 @@ SvStream& SfxDateTimeItem::Store( SvStream& rStream, sal_uInt16 ) const
{
DBG_CHKTHIS(SfxDateTimeItem, 0);
rStream << aDateTime.GetDate();
- rStream << static_cast<sal_Int32>(aDateTime.GetTime());
+ rStream.WriteInt64(aDateTime.GetTime());
return rStream;
}
More information about the Libreoffice-commits
mailing list