mirror of
https://github.com/imgproxy/imgproxy.git
synced 2025-10-01 15:08:17 +02:00
Try to clear resulting image data even if wasn't successfully saved
This commit is contained in:
10
process.go
10
process.go
@@ -648,6 +648,10 @@ func vipsLoadImage(data []byte, imgtype imageType, shrink int, svgScale float64,
|
|||||||
func vipsSaveImage(img *C.struct__VipsImage, imgtype imageType, quality int) ([]byte, context.CancelFunc, error) {
|
func vipsSaveImage(img *C.struct__VipsImage, imgtype imageType, quality int) ([]byte, context.CancelFunc, error) {
|
||||||
var ptr unsafe.Pointer
|
var ptr unsafe.Pointer
|
||||||
|
|
||||||
|
cancel := func() {
|
||||||
|
C.g_free_go(&ptr)
|
||||||
|
}
|
||||||
|
|
||||||
err := C.int(0)
|
err := C.int(0)
|
||||||
|
|
||||||
imgsize := C.size_t(0)
|
imgsize := C.size_t(0)
|
||||||
@@ -668,17 +672,13 @@ func vipsSaveImage(img *C.struct__VipsImage, imgtype imageType, quality int) ([]
|
|||||||
err = C.vips_icosave_go(img, &ptr, &imgsize)
|
err = C.vips_icosave_go(img, &ptr, &imgsize)
|
||||||
}
|
}
|
||||||
if err != 0 {
|
if err != 0 {
|
||||||
return nil, func() {}, vipsError()
|
return nil, cancel, vipsError()
|
||||||
}
|
}
|
||||||
|
|
||||||
const maxBufSize = ^uint32(0)
|
const maxBufSize = ^uint32(0)
|
||||||
|
|
||||||
b := (*[maxBufSize]byte)(ptr)[:int(imgsize):int(imgsize)]
|
b := (*[maxBufSize]byte)(ptr)[:int(imgsize):int(imgsize)]
|
||||||
|
|
||||||
cancel := func() {
|
|
||||||
C.g_free_go(&ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
return b, cancel, nil
|
return b, cancel, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user