|
@@ -5,9 +5,11 @@ package vips
|
|
|
#cgo CFLAGS: -O3
|
|
|
#cgo LDFLAGS: -lm
|
|
|
#include "source.h"
|
|
|
+#include "vips.h"
|
|
|
*/
|
|
|
import "C"
|
|
|
import (
|
|
|
+ "fmt"
|
|
|
"io"
|
|
|
"runtime/cgo"
|
|
|
"unsafe"
|
|
@@ -26,11 +28,13 @@ func imgproxyReaderSeek(handle C.uintptr_t, offset C.int64_t, whence int) C.int6
|
|
|
h := cgo.Handle(handle)
|
|
|
reader, ok := h.Value().(io.ReadSeeker)
|
|
|
if !ok {
|
|
|
+ C.vips_error_go(cachedCString("imgproxyReaderSeek"), cachedCString("failed to cast handle to io.ReadSeeker"))
|
|
|
return -1
|
|
|
}
|
|
|
|
|
|
pos, err := reader.Seek(int64(offset), whence)
|
|
|
if err != nil {
|
|
|
+ C.vips_error_go(cachedCString("imgproxyReaderSeek"), cachedCString("failed to seek"))
|
|
|
return -1
|
|
|
}
|
|
|
|
|
@@ -44,6 +48,7 @@ func imgproxyReaderRead(handle C.uintptr_t, pointer unsafe.Pointer, size C.int64
|
|
|
h := cgo.Handle(handle)
|
|
|
reader, ok := h.Value().(io.ReadSeeker)
|
|
|
if !ok {
|
|
|
+ C.vips_error_go(cachedCString("imgproxyReaderRead"), cachedCString("invalid reader handle"))
|
|
|
return -1
|
|
|
}
|
|
|
|
|
@@ -52,6 +57,8 @@ func imgproxyReaderRead(handle C.uintptr_t, pointer unsafe.Pointer, size C.int64
|
|
|
if err == io.EOF {
|
|
|
return 0
|
|
|
} else if err != nil {
|
|
|
+ msg := fmt.Sprintf("error reading from imgproxy source: %v", err)
|
|
|
+ C.vips_error_go(cachedCString("imgproxyReaderRead"), cachedCString(msg))
|
|
|
return -1
|
|
|
}
|
|
|
|