Index: third_party/glew/src/glew.c |
=================================================================== |
--- third_party/glew/src/glew.c (revision 27788) |
+++ third_party/glew/src/glew.c (working copy) |
@@ -66,29 +66,18 @@ |
#endif /* GLEW_MX */ |
#if defined(__APPLE__) |
-#include <mach-o/dyld.h> |
+#include <dlfcn.h> |
#include <stdlib.h> |
#include <string.h> |
void* NSGLGetProcAddress (const GLubyte *name) |
{ |
- static const struct mach_header* image = NULL; |
- NSSymbol symbol; |
- char* symbolName; |
+ static void* image = NULL; |
if (NULL == image) |
{ |
- image = NSAddImage("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", NSADDIMAGE_OPTION_RETURN_ON_ERROR); |
+ image = dlopen("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", RTLD_LAZY | RTLD_LOCAL); |
} |
- /* prepend a '_' for the Unix C symbol mangling convention */ |
- symbolName = malloc(strlen((const char*)name) + 2); |
- strcpy(symbolName+1, (const char*)name); |
- symbolName[0] = '_'; |
- symbol = NULL; |
- /* if (NSIsSymbolNameDefined(symbolName)) |
- symbol = NSLookupAndBindSymbol(symbolName); */ |
- symbol = image ? NSLookupSymbolInImage(image, symbolName, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND | NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR) : NULL; |
- free(symbolName); |
- return symbol ? NSAddressOfSymbol(symbol) : NULL; |
+ return image ? dlsym(image, (const char*) name) : NULL; |
} |
#endif /* __APPLE__ */ |