From 066074735924d196c96a7602f26577e76abc8353 Mon Sep 17 00:00:00 2001 From: malc Date: Tue, 29 May 2018 16:34:46 +0300 Subject: [PATCH] Fix gl function pointers Strict aliasing violation here, but ocamlc adds -fno-strict-aliasing to cc invocation, so it's "safe"... --- link.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/link.c b/link.c index 312bb90..b4b472c 100644 --- a/link.c +++ b/link.c @@ -3626,12 +3626,14 @@ CAMLprim void ml_unmappbo (value s_v) static void setuppbo (void) { extern void (*wsigladdr (const char *name)) (void); - state.bo_usable = wsigladdr ("glBindBufferARB") - && wsigladdr ("glUnmapBufferARB") - && wsigladdr ("glMapBufferARB") - && wsigladdr ("glBufferDataARB") - && wsigladdr ("glGenBuffersARB") - && wsigladdr ("glDeleteBuffersARB"); +#define GPA(n) (*(uintptr_t *) &state.n = (uintptr_t) wsigladdr (#n)) + state.bo_usable = GPA (glBindBufferARB) + && GPA (glUnmapBufferARB) + && GPA (glMapBufferARB) + && GPA (glBufferDataARB) + && GPA (glGenBuffersARB) + && GPA (glDeleteBuffersARB); +#undef GPA } CAMLprim value ml_bo_usable (value unit_v) -- 2.11.4.GIT