1 #include <string.h> 2 3 /* void glGetProgramInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */ 4 static 5 jstring 6 android_glGetProgramInfoLog (JNIEnv *_env, jobject _this, jint shader) { 7 GLint infoLen = 0; 8 jstring _result = 0; 9 char* buf = 0; 10 glGetProgramiv(shader, GL_INFO_LOG_LENGTH, &infoLen); 11 if (infoLen) { 12 char* buf = (char*) malloc(infoLen); 13 if (buf == 0) { 14 _env->ThrowNew(IAEClass, "out of memory"); 15 goto exit; 16 } 17 glGetProgramInfoLog(shader, infoLen, NULL, buf); 18 _result = _env->NewStringUTF(buf); 19 } else { 20 _result = _env->NewStringUTF(""); 21 } 22 exit: 23 if (buf) { 24 free(buf); 25 } 26 return _result; 27 }