From 9b1e3b3dca293e077b8163e2c2dfbf54f9a1d26b Mon Sep 17 00:00:00 2001 From: omniavinco Date: Fri, 8 Jan 2016 02:44:33 +0900 Subject: [PATCH] Generate Sources of origin/master updated at Thu Jan 7 17:44:33 GMT 2016 --- src/glew.c | 93 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 52 insertions(+), 41 deletions(-) diff --git a/src/glew.c b/src/glew.c index ad8c939..2ede725 100644 --- a/src/glew.c +++ b/src/glew.c @@ -42,7 +42,7 @@ #endif #include /* For size_t */ -#include /* For malloc, free */ +#include /* For bsearch */ #include /* For memset */ #if defined(GLEW_REGAL) @@ -97,7 +97,7 @@ void* NSGLGetProcAddress (const GLubyte *name) { static void* image = NULL; void* addr; - if (NULL == image) + if (NULL == image) { image = dlopen("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", RTLD_LAZY); } @@ -198,25 +198,19 @@ static GLuint _glewStrCLen (const GLubyte* s, GLubyte c) GLuint i=0; if (s == NULL) return 0; while (s[i] != '\0' && s[i] != c) i++; - return (s[i] == '\0' || s[i] == c) ? i : 0; + return i; } -static GLubyte *_glewStrDup (const GLubyte *s) +static GLuint _glewStrCopy(char *d, const char *s, char c) { - int n = _glewStrLen(s); - GLubyte *dup = malloc(n+1); - if (dup) - { - GLubyte *i = dup; - for (;;) - { - *i = *s; - if (*i) { ++i; ++s; } else break; - } - } - return dup; + GLuint i=0; + if (s == NULL) return 0; + while (s[i] != '\0' && s[i] != c) { d[i] = s[i]; i++; } + d[i] = '\0'; + return i; } +#if !defined(GLEW_OSMESA) #if !defined(__APPLE__) || defined(GLEW_APPLE_GLX) static GLboolean _glewStrSame (const GLubyte* a, const GLubyte* b, GLuint n) { @@ -227,6 +221,7 @@ static GLboolean _glewStrSame (const GLubyte* a, const GLubyte* b, GLuint n) return i == n ? GL_TRUE : GL_FALSE; } #endif +#endif static GLboolean _glewStrSame1 (const GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb) { @@ -287,6 +282,7 @@ static GLboolean _glewStrSame3 (const GLubyte** a, GLuint* na, const GLubyte* b, * other extension names. Could use strtok() but the constant * string returned by glGetString might be in read-only memory. */ +#if !defined(GLEW_OSMESA) #if !defined(__APPLE__) || defined(GLEW_APPLE_GLX) static GLboolean _glewSearchExtension (const char* name, const GLubyte *start, const GLubyte *end) { @@ -302,6 +298,7 @@ static GLboolean _glewSearchExtension (const char* name, const GLubyte *start, c return GL_FALSE; } #endif +#endif #if !defined(_WIN32) || !defined(GLEW_MX) @@ -16706,13 +16703,25 @@ static GLboolean _glewInit_GL_WIN_swap_hint () static int _glewExtensionCompare(const void *a, const void *b) { - return strcmp((const char *) a, *(const char * const *) b); + /* http://www.chanduthedev.com/2012/07/strcmp-implementation-in-c.html */ + const char *s1 = (const char *) a; + const char *s2 = *(const char * const *) b; + while (*s1 || *s2) + { + if (*s1 > *s2) + return 1; + if (*s1 < *s2) + return -1; + s1++; + s2++; + } + return 0; } static GLboolean *_glewGetExtensionString(const char *name) { const char **n = (const char **) bsearch(name, _glewExtensionLookup, sizeof(_glewExtensionLookup)/sizeof(char *)-1, sizeof(char *), _glewExtensionCompare); - int i; + ptrdiff_t i; if (n) { @@ -16726,7 +16735,7 @@ static GLboolean *_glewGetExtensionString(const char *name) static GLboolean *_glewGetExtensionEnable(const char *name) { const char **n = (const char **) bsearch(name, _glewExtensionLookup, sizeof(_glewExtensionLookup)/sizeof(char *)-1, sizeof(char *), _glewExtensionCompare); - int i; + ptrdiff_t i; if (n) { @@ -16737,17 +16746,17 @@ static GLboolean *_glewGetExtensionEnable(const char *name) return NULL; } -static char *_glewNextSpace(char *i) +static const char *_glewNextSpace(const char *i) { - char *j = i; + const char *j = i; if (j) while (*j!=' ' && *j) ++j; return j; } -static char *_glewNextNonSpace(char *i) +static const char *_glewNextNonSpace(const char *i) { - char *j = i; + const char *j = i; if (j) while (*j==' ') ++j; return j; @@ -16774,7 +16783,7 @@ static GLenum GLEWAPIENTRY glewContextInit () dot = _glewStrCLen(s, '.'); if (dot == 0) return GLEW_ERROR_NO_GL_VERSION; - + major = s[dot-1]-'0'; minor = s[dot+1]-'0'; @@ -16782,7 +16791,7 @@ static GLenum GLEWAPIENTRY glewContextInit () minor = 0; if (major<0 || major>9) return GLEW_ERROR_NO_GL_VERSION; - + if (major == 1 && minor == 0) { return GLEW_ERROR_GL_VERSION_10_ONLY; @@ -16799,12 +16808,12 @@ static GLenum GLEWAPIENTRY glewContextInit () GLEW_VERSION_3_2 = GLEW_VERSION_3_3 == GL_TRUE || ( major == 3 && minor >= 2 ) ? GL_TRUE : GL_FALSE; GLEW_VERSION_3_1 = GLEW_VERSION_3_2 == GL_TRUE || ( major == 3 && minor >= 1 ) ? GL_TRUE : GL_FALSE; GLEW_VERSION_3_0 = GLEW_VERSION_3_1 == GL_TRUE || ( major == 3 ) ? GL_TRUE : GL_FALSE; - GLEW_VERSION_2_1 = GLEW_VERSION_3_0 == GL_TRUE || ( major == 2 && minor >= 1 ) ? GL_TRUE : GL_FALSE; + GLEW_VERSION_2_1 = GLEW_VERSION_3_0 == GL_TRUE || ( major == 2 && minor >= 1 ) ? GL_TRUE : GL_FALSE; GLEW_VERSION_2_0 = GLEW_VERSION_2_1 == GL_TRUE || ( major == 2 ) ? GL_TRUE : GL_FALSE; GLEW_VERSION_1_5 = GLEW_VERSION_2_0 == GL_TRUE || ( major == 1 && minor >= 5 ) ? GL_TRUE : GL_FALSE; GLEW_VERSION_1_4 = GLEW_VERSION_1_5 == GL_TRUE || ( major == 1 && minor >= 4 ) ? GL_TRUE : GL_FALSE; GLEW_VERSION_1_3 = GLEW_VERSION_1_4 == GL_TRUE || ( major == 1 && minor >= 3 ) ? GL_TRUE : GL_FALSE; - GLEW_VERSION_1_2_1 = GLEW_VERSION_1_3 == GL_TRUE ? GL_TRUE : GL_FALSE; + GLEW_VERSION_1_2_1 = GLEW_VERSION_1_3 == GL_TRUE ? GL_TRUE : GL_FALSE; GLEW_VERSION_1_2 = GLEW_VERSION_1_2_1 == GL_TRUE || ( major == 1 && minor >= 2 ) ? GL_TRUE : GL_FALSE; GLEW_VERSION_1_1 = GLEW_VERSION_1_2 == GL_TRUE || ( major == 1 && minor >= 1 ) ? GL_TRUE : GL_FALSE; } @@ -16841,36 +16850,38 @@ static GLenum GLEWAPIENTRY glewContextInit () } else { - const GLubyte *ext; - char *begin; - char *end; - char *i; - char *j; + const char *extensions; + const char *end; + const char *i; + const char *j; + char ext[128]; GLboolean *enable; - ext = glGetString(GL_EXTENSIONS); + extensions = (const char *) glGetString(GL_EXTENSIONS); - if (ext) + if (extensions) { - begin = (char *) _glewStrDup(ext); - end = begin + _glewStrLen((GLubyte *) begin); - for (i=begin; i= (ptrdiff_t) sizeof(ext)) + continue; + _glewStrCopy(ext, i, ' '); /* Based on extension string(s), glewGetExtension purposes */ - enable = _glewGetExtensionString(i); + enable = _glewGetExtensionString(ext); if (enable) *enable = GL_TRUE; /* Based on extension string(s), experimental mode, glewIsSupported purposes */ - enable = _glewGetExtensionEnable(i); + enable = _glewGetExtensionEnable(ext); if (enable) *enable = GL_TRUE; } - free(begin); } } #ifdef GL_VERSION_1_2