summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-08-05 19:15:36 +0100
committerMichael Stahl <mstahl@redhat.com>2017-08-07 22:50:13 +0200
commitbd0c6fb52bd7af947936f736c7357200e2d17fc2 (patch)
tree81ccc1db8eebc09e9bc624000a20ebad4ed01c32
parent80e66a46e45daa9a2842f501195018541873275d (diff)
ofz#2867 null deref
Reviewed-on: https://gerrit.libreoffice.org/40792 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com> (cherry picked from commit 42b894f80a6d0c39bb0f7092eb204a15c22c4f38) Change-Id: If856473683685d79d88b024f7fafa2920b403bb7 Reviewed-on: https://gerrit.libreoffice.org/40793 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Stahl <mstahl@redhat.com>
-rw-r--r--sc/qa/unit/data/slk/pass/numfmt-2.slk1
-rw-r--r--svl/source/numbers/zforscan.cxx19
2 files changed, 12 insertions, 8 deletions
diff --git a/sc/qa/unit/data/slk/pass/numfmt-2.slk b/sc/qa/unit/data/slk/pass/numfmt-2.slk
new file mode 100644
index 000000000000..5989cdc3e64e
--- /dev/null
+++ b/sc/qa/unit/data/slk/pass/numfmt-2.slk
@@ -0,0 +1 @@
+P;Pÿ ÿ ÿ ÿ ÿ dÿ Sÿ0 \ No newline at end of file
diff --git a/svl/source/numbers/zforscan.cxx b/svl/source/numbers/zforscan.cxx
index e1187ffae7dd..5a5019d12e7c 100644
--- a/svl/source/numbers/zforscan.cxx
+++ b/svl/source/numbers/zforscan.cxx
@@ -2562,17 +2562,20 @@ sal_Int32 ImpSvNumberformatScan::FinalScan( OUString& rString )
nTypeArray[i] = NF_SYMBOLTYPE_DIGIT;
OUString& rStr = sStrArray[i];
i++;
- nPos = nPos + sStrArray[i].getLength();
- nCounter++;
- while (i < nAnzStrings &&
- sStrArray[i][0] == '0')
+ if (i < nAnzStrings)
{
- rStr += sStrArray[i];
nPos = nPos + sStrArray[i].getLength();
- nTypeArray[i] = NF_SYMBOLTYPE_EMPTY;
- nAnzResStrings--;
nCounter++;
- i++;
+ while (i < nAnzStrings &&
+ sStrArray[i][0] == '0')
+ {
+ rStr += sStrArray[i];
+ nPos = nPos + sStrArray[i].getLength();
+ nTypeArray[i] = NF_SYMBOLTYPE_EMPTY;
+ nAnzResStrings--;
+ nCounter++;
+ i++;
+ }
}
}
else