1
0
mirror of https://github.com/Mrs4s/go-cqhttp.git synced 2025-05-05 19:43:49 +08:00

fix: uploadLocalImage SIGSEGV (#1392)

* fix: uploadLocalImage SIGSEGV

* fix: removeLocalElement nil ptr
This commit is contained in:
源文雨 2022-02-24 21:58:48 +08:00 committed by GitHub
parent d4c2b62e5e
commit 6687d22643
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -146,7 +146,7 @@ func (w *worker) wait() {
} }
// uploadLocalImage 上传本地图片 // uploadLocalImage 上传本地图片
func (bot *CQBot) uploadLocalImage(target message.Source, img *LocalImageElement) (i message.IMessageElement, err error) { func (bot *CQBot) uploadLocalImage(target message.Source, img *LocalImageElement) (message.IMessageElement, error) {
if img.File != "" { if img.File != "" {
f, err := os.Open(img.File) f, err := os.Open(img.File)
if err != nil { if err != nil {
@ -158,7 +158,10 @@ func (bot *CQBot) uploadLocalImage(target message.Source, img *LocalImageElement
if lawful, mime := base.IsLawfulImage(img.Stream); !lawful { if lawful, mime := base.IsLawfulImage(img.Stream); !lawful {
return nil, errors.New("image type error: " + mime) return nil, errors.New("image type error: " + mime)
} }
i, err = bot.Client.UploadImage(target, img.Stream, 4) i, err := bot.Client.UploadImage(target, img.Stream, 4)
if err != nil {
return nil, err
}
switch i := i.(type) { switch i := i.(type) {
case *message.GroupImageElement: case *message.GroupImageElement:
i.Flash = img.Flash i.Flash = img.Flash
@ -166,7 +169,7 @@ func (bot *CQBot) uploadLocalImage(target message.Source, img *LocalImageElement
case *message.FriendImageElement: case *message.FriendImageElement:
i.Flash = img.Flash i.Flash = img.Flash
} }
return return i, err
} }
// uploadLocalVideo 上传本地短视频至群聊 // uploadLocalVideo 上传本地短视频至群聊
@ -185,6 +188,7 @@ func removeLocalElement(elements []message.IMessageElement) []message.IMessageEl
switch e.(type) { switch e.(type) {
case *LocalImageElement, *LocalVideoElement: case *LocalImageElement, *LocalVideoElement:
case *message.VoiceElement: // 未上传的语音消息, 也删除 case *message.VoiceElement: // 未上传的语音消息, 也删除
case nil:
default: default:
if j < i { if j < i {
elements[j] = e elements[j] = e