[Libreoffice-commits] core.git: wizards/source
Jean-Pierre Ledure
jp at ledure.be
Sun Jun 11 15:45:03 UTC 2017
wizards/source/access2base/UtilProperty.xba | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
New commits:
commit cc6f5af10725f16c659d639857eb80b771f44b9c
Author: Jean-Pierre Ledure <jp at ledure.be>
Date: Sun Jun 11 17:42:11 2017 +0200
Access2Base - Correct handling of empty arrays in UtilProperty
Avoid runtime error when storing an empty array
(undocumented API)
Change-Id: I3f8d31300dec365d7028dcd6bd9de2b24b2e0c4c
diff --git a/wizards/source/access2base/UtilProperty.xba b/wizards/source/access2base/UtilProperty.xba
index 88c8aa9bc756..e17b10374441 100644
--- a/wizards/source/access2base/UtilProperty.xba
+++ b/wizards/source/access2base/UtilProperty.xba
@@ -217,8 +217,10 @@ Dim cstLF As String
Case < vbArray ' Scalar
sResult = sResult & sName & " = " & Utils._CStr(vValue, False) & cstLF
Case Else ' Vector or matrix
+ If uBound(vValue, 1) < 0 Then
+ sResult = sResult & sName & " = (0)" & cstLF
' 1-dimension but vector of vectors must also be considered
- If VarType(vValue(0)) >= vbArray Then
+ ElseIf VarType(vValue(0)) >= vbArray Then
sResult = sResult & sName & " = (" & UBound(vValue) + 1 & "," & UBound(vValue(0)) + 1 & ")" & cstLF
For j = 0 To UBound(vValue)
sResult = sResult & Utils._CStr(vValue(j), False) & cstLF
@@ -263,19 +265,24 @@ Const cstEqualArray = " = (", cstEqual = " = "
If InStr(vString(i), cstEqualArray) = lPosition + Len(sName) Then ' Start array processing
lSearch = lPosition + Len(sName) + Len(cstEqualArray) - 1
sDim = Utils._RegexSearch(vString(i), "\([0-9]+\)", lSearch) ' e.g. (10)
- If sDim <> "" Then
+ If sDim = "(0)" Then ' Empty array
+ iRows = -1
+ vValue = Array()
+ _SetPropertyValue(vResult, sName, vValue)
+ ElseIf sDim <> "" Then ' Vector with content
iCols = CInt(Mid(sDim, 2, Len(sDim) - 2))
iRows = 0
ReDim vValue(0 To iCols - 1)
- Else
+ iArray = 0
+ Else ' Matrix with content
lSearch = lPosition + Len(sName) + Len(cstEqualArray) - 1
sDim = Utils._RegexSearch(vString(i), "\([0-9]+,", lSearch) ' e.g. (10,
iRows = CInt(Mid(sDim, 2, Len(sDim) - 2))
sDim = Utils._RegexSearch(vString(i), ",[0-9]+\)", lSearch) ' e.g. ,20)
iCols = CInt(Mid(sDim, 2, Len(sDim) - 2))
ReDim vValue(0 To iRows - 1)
+ iArray = 0
End If
- iArray = 0
ElseIf InStr(vString(i), cstEqual) = lPosition + Len(sName) Then
vValue = Utils._CVar(Mid(vString(i), Len(sName) + Len(cstEqual) + 1))
_SetPropertyValue(vResult, sName, vValue)
More information about the Libreoffice-commits
mailing list