glGetShaderInfoLog.cpp revision 50d0b14689b0ae95ea7b66a8c2f7b955115812dd
1#include <string.h>
2
3/* void glGetShaderInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */
4static
5jstring
6android_glGetShaderInfoLog (JNIEnv *_env, jobject _this, jint shader) {
7    GLint infoLen = 0;
8    jstring _result = 0;
9    char* buf = 0;
10    glGetShaderiv(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        glGetShaderInfoLog(shader, infoLen, NULL, buf);
18        _result = _env->NewStringUTF(buf);
19    } else {
20        _result = _env->NewStringUTF("");
21    }
22exit:
23    if (buf) {
24            free(buf);
25    }
26    return _result;
27}