Fix DeleteComment slice bounds out of range (#1343)
This commit is contained in:
parent
fb1aab7add
commit
c72fb747b8
|
@ -156,18 +156,21 @@ func (f *File) DeleteComment(sheet, cell string) (err error) {
|
||||||
}
|
}
|
||||||
commentsXML = strings.TrimPrefix(commentsXML, "/")
|
commentsXML = strings.TrimPrefix(commentsXML, "/")
|
||||||
if comments := f.commentsReader(commentsXML); comments != nil {
|
if comments := f.commentsReader(commentsXML); comments != nil {
|
||||||
for i, cmt := range comments.CommentList.Comment {
|
for i := 0; i < len(comments.CommentList.Comment); i++ {
|
||||||
if cmt.Ref == cell {
|
cmt := comments.CommentList.Comment[i]
|
||||||
|
if cmt.Ref != cell {
|
||||||
|
continue
|
||||||
|
}
|
||||||
if len(comments.CommentList.Comment) > 1 {
|
if len(comments.CommentList.Comment) > 1 {
|
||||||
comments.CommentList.Comment = append(
|
comments.CommentList.Comment = append(
|
||||||
comments.CommentList.Comment[:i],
|
comments.CommentList.Comment[:i],
|
||||||
comments.CommentList.Comment[i+1:]...,
|
comments.CommentList.Comment[i+1:]...,
|
||||||
)
|
)
|
||||||
|
i--
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
comments.CommentList.Comment = nil
|
comments.CommentList.Comment = nil
|
||||||
}
|
}
|
||||||
}
|
|
||||||
f.Comments[commentsXML] = comments
|
f.Comments[commentsXML] = comments
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
|
|
@ -55,15 +55,19 @@ func TestDeleteComment(t *testing.T) {
|
||||||
assert.NoError(t, f.AddComment("Sheet2", "A40", `{"author":"Excelize: ","text":"This is a comment1."}`))
|
assert.NoError(t, f.AddComment("Sheet2", "A40", `{"author":"Excelize: ","text":"This is a comment1."}`))
|
||||||
assert.NoError(t, f.AddComment("Sheet2", "A41", `{"author":"Excelize: ","text":"This is a comment2."}`))
|
assert.NoError(t, f.AddComment("Sheet2", "A41", `{"author":"Excelize: ","text":"This is a comment2."}`))
|
||||||
assert.NoError(t, f.AddComment("Sheet2", "C41", `{"author":"Excelize: ","text":"This is a comment3."}`))
|
assert.NoError(t, f.AddComment("Sheet2", "C41", `{"author":"Excelize: ","text":"This is a comment3."}`))
|
||||||
|
assert.NoError(t, f.AddComment("Sheet2", "C41", `{"author":"Excelize: ","text":"This is a comment3-1."}`))
|
||||||
|
assert.NoError(t, f.AddComment("Sheet2", "C42", `{"author":"Excelize: ","text":"This is a comment4."}`))
|
||||||
|
assert.NoError(t, f.AddComment("Sheet2", "C41", `{"author":"Excelize: ","text":"This is a comment3-2."}`))
|
||||||
|
|
||||||
assert.NoError(t, f.DeleteComment("Sheet2", "A40"))
|
assert.NoError(t, f.DeleteComment("Sheet2", "A40"))
|
||||||
|
|
||||||
assert.EqualValues(t, 2, len(f.GetComments()["Sheet2"]))
|
assert.EqualValues(t, 5, len(f.GetComments()["Sheet2"]))
|
||||||
assert.EqualValues(t, len(NewFile().GetComments()), 0)
|
assert.EqualValues(t, len(NewFile().GetComments()), 0)
|
||||||
|
|
||||||
// Test delete all comments in a worksheet
|
// Test delete all comments in a worksheet
|
||||||
assert.NoError(t, f.DeleteComment("Sheet2", "A41"))
|
assert.NoError(t, f.DeleteComment("Sheet2", "A41"))
|
||||||
assert.NoError(t, f.DeleteComment("Sheet2", "C41"))
|
assert.NoError(t, f.DeleteComment("Sheet2", "C41"))
|
||||||
|
assert.NoError(t, f.DeleteComment("Sheet2", "C42"))
|
||||||
assert.EqualValues(t, 0, len(f.GetComments()["Sheet2"]))
|
assert.EqualValues(t, 0, len(f.GetComments()["Sheet2"]))
|
||||||
// Test delete comment on not exists worksheet
|
// Test delete comment on not exists worksheet
|
||||||
assert.EqualError(t, f.DeleteComment("SheetN", "A1"), "sheet SheetN does not exist")
|
assert.EqualError(t, f.DeleteComment("SheetN", "A1"), "sheet SheetN does not exist")
|
||||||
|
|
Loading…
Reference in New Issue