From 28fd63f43a9cc4100e694c3e7f638c74d3ad474f Mon Sep 17 00:00:00 2001 From: Simon Leblanc Date: Thu, 25 Dec 2014 03:02:47 -0500 Subject: Fix #174 ptr() panic on uintptr --- gl.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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") -- cgit v1.2.3