1#include <stdlib.h>
2
3/* void glGetShaderInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */
4static jstring android_glGetShaderInfoLog(JNIEnv *_env, jobject, jint shader) {
5    GLint infoLen = 0;
6    glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
7    if (!infoLen) {
8        infoLen = 512;
9    }
10    char* buf = (char*) malloc(infoLen);
11    if (buf == NULL) {
12        jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
13        return NULL;
14    }
15    GLsizei outLen = 0;
16    glGetShaderInfoLog(shader, infoLen, &outLen, buf);
17    jstring result = _env->NewStringUTF(outLen == 0 ? "" : buf);
18    free(buf);
19    return result;
20}
21