aboutsummaryrefslogtreecommitdiff
path: root/gl.go
diff options
context:
space:
mode:
Diffstat (limited to 'gl.go')
-rw-r--r--gl.go8
1 files changed, 7 insertions, 1 deletions
diff --git a/gl.go b/gl.go
index 1763b05..82f237c 100644
--- a/gl.go
+++ b/gl.go
@@ -54,7 +54,7 @@ func freeString(ptr *C.GLchar) { C.free(unsafe.Pointer(ptr)) }
func ptr(v interface{}) unsafe.Pointer {
- if v == nil || reflect.ValueOf(v).IsNil() {
+ if v == nil {
return unsafe.Pointer(nil)
}
@@ -65,8 +65,14 @@ func ptr(v interface{}) unsafe.Pointer {
offset, _ := v.(uintptr)
return unsafe.Pointer(offset)
case reflect.Ptr:
+ if rv.IsNil() {
+ return unsafe.Pointer(nil)
+ }
et = rv.Elem()
case reflect.Slice:
+ if rv.IsNil() || rv.Len() == 0 {
+ return unsafe.Pointer(nil)
+ }
et = rv.Index(0)
default:
panic("type must be a pointer, a slice, uintptr or nil")