19875750593aae7c2a62f33c620809d49162393ebElliott Hughes#include <stdlib.h>
250d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich
350d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich/* void glGetProgramInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */
49875750593aae7c2a62f33c620809d49162393ebElliott Hughesstatic jstring android_glGetProgramInfoLog(JNIEnv *_env, jobject, jint shader) {
550d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich    GLint infoLen = 0;
650d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich    glGetProgramiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
79875750593aae7c2a62f33c620809d49162393ebElliott Hughes    if (!infoLen) {
89875750593aae7c2a62f33c620809d49162393ebElliott Hughes        return _env->NewStringUTF("");
950d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich    }
109875750593aae7c2a62f33c620809d49162393ebElliott Hughes    char* buf = (char*) malloc(infoLen);
119875750593aae7c2a62f33c620809d49162393ebElliott Hughes    if (buf == NULL) {
129875750593aae7c2a62f33c620809d49162393ebElliott Hughes        jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
139875750593aae7c2a62f33c620809d49162393ebElliott Hughes        return NULL;
1450d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich    }
159875750593aae7c2a62f33c620809d49162393ebElliott Hughes    glGetProgramInfoLog(shader, infoLen, NULL, buf);
169875750593aae7c2a62f33c620809d49162393ebElliott Hughes    jstring result = _env->NewStringUTF(buf);
179875750593aae7c2a62f33c620809d49162393ebElliott Hughes    free(buf);
189875750593aae7c2a62f33c620809d49162393ebElliott Hughes    return result;
199875750593aae7c2a62f33c620809d49162393ebElliott Hughes}
20