aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Leblanc <sim.leblanc@gmail.com>2014-12-25 03:02:47 -0500
committerSimon Leblanc <sim.leblanc@gmail.com>2014-12-25 03:02:47 -0500
commit28fd63f43a9cc4100e694c3e7f638c74d3ad474f (patch)
treed34b897276396b1e512099219a954707b9a52810
parent8f5144afd65c59bc18cf069a0c9a95c18dc1c07e (diff)
downloadgl-28fd63f43a9cc4100e694c3e7f638c74d3ad474f.tar.gz
Fix #174 ptr() panic on uintptr
-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")