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