summaryrefslogtreecommitdiff
path: root/unotools
diff options
context:
space:
mode:
authorMatteo Casalin <matteo.casalin@yahoo.com>2019-01-26 00:44:26 +0100
committerMatteo Casalin <matteo.casalin@yahoo.com>2019-01-27 23:10:13 +0100
commit3c2cd4829229a312e79cfba3971b954bd605681c (patch)
tree40c9f024d2f06dc57cc3b07ecfa1f242f9ca67bc /unotools
parent6da3cd5521ffba2f6502929260d33c91ec56d556 (diff)
Bail out early
Change-Id: I7851f4952ca2c863d92fd14fa19005ed35634033 Reviewed-on: https://gerrit.libreoffice.org/66941 Tested-by: Jenkins Reviewed-by: Matteo Casalin <matteo.casalin@yahoo.com>
Diffstat (limited to 'unotools')
-rw-r--r--unotools/source/misc/datetime.cxx38
1 files changed, 16 insertions, 22 deletions
diff --git a/unotools/source/misc/datetime.cxx b/unotools/source/misc/datetime.cxx
index 7a843db7a34a..7ebfd543c681 100644
--- a/unotools/source/misc/datetime.cxx
+++ b/unotools/source/misc/datetime.cxx
@@ -349,35 +349,29 @@ bool ISO8601parseDateTime(const OUString &rString, css::util::DateTime& rDateTim
bool ISO8601parseDate(const OUString &aDateStr, css::util::Date& rDate)
{
const sal_Int32 nDateTokens {comphelper::string::getTokenCount(aDateStr, '-')};
- bool bSuccess = true;
+
+ if (nDateTokens<1 || nDateTokens>3)
+ return false;
sal_Int32 nYear = 1899;
sal_Int32 nMonth = 12;
sal_Int32 nDay = 30;
- if ( nDateTokens > 3 || aDateStr.isEmpty() )
- bSuccess = false;
- else
- {
- sal_Int32 n = 0;
- if ( !convertNumber32( nYear, aDateStr.getToken( 0, '-', n ), 0, 9999 ) )
- bSuccess = false;
- if ( nDateTokens >= 2 )
- if ( !convertNumber32( nMonth, aDateStr.getToken( 0, '-', n ), 0, 12 ) )
- bSuccess = false;
- if ( nDateTokens >= 3 )
- if ( !convertNumber32( nDay, aDateStr.getToken( 0, '-', n ), 0, 31 ) )
- bSuccess = false;
- }
+ sal_Int32 nIdx {0};
+ if ( !convertNumber32( nYear, aDateStr.getToken( 0, '-', nIdx ), 0, 9999 ) )
+ return false;
+ if ( nDateTokens >= 2 )
+ if ( !convertNumber32( nMonth, aDateStr.getToken( 0, '-', nIdx ), 0, 12 ) )
+ return false;
+ if ( nDateTokens >= 3 )
+ if ( !convertNumber32( nDay, aDateStr.getToken( 0, '-', nIdx ), 0, 31 ) )
+ return false;
- if (bSuccess)
- {
- rDate.Year = static_cast<sal_uInt16>(nYear);
- rDate.Month = static_cast<sal_uInt16>(nMonth);
- rDate.Day = static_cast<sal_uInt16>(nDay);
- }
+ rDate.Year = static_cast<sal_uInt16>(nYear);
+ rDate.Month = static_cast<sal_uInt16>(nMonth);
+ rDate.Day = static_cast<sal_uInt16>(nDay);
- return bSuccess;
+ return true;
}
/** convert ISO8601 Time String to util::Time */