JSB_glUniform2f parameter convert error

Here is the JSB_glUniform2f code:

JSBool JSB_glUniform2f(JSContext cx, uint32_t argc, jsvalvp) {
> JSB_PRECONDITION2( argc == 3, cx, JS_FALSE, “Invalid number of arguments” );
> jsval *argvp = JS_ARGV(cx,vp);
> JSBool ok = JS_TRUE;
> int32_t arg0; int32_t arg1; int32_t arg2;
>
> ok &= JSB_jsval_to_int32( cx, *argvp++, &arg0 );
> ok &= JSB_jsval_to_int32( cx, *argvp++, &arg1 );
> ok &= JSB_jsval_to_int32( cx, *argvp++, &arg2 );
> JSB_PRECONDITION2(ok, cx, JS_FALSE, “Error processing arguments”);
>
> glUniform2f((GLint)arg0 , (GLfloat)arg1 , (GLfloat)arg2 );
> JS_SET_RVAL(cx, vp, JSVAL_VOID);
> return JS_TRUE;
}

glUniform2f is an OpenGL function, its parameters’s type are: int, float, float, Not int, int, int.
If I call gl.uniform2f(8, 0.1, 0) from JS, The parameters will be converted to 8, 0, 0, it’s wrong.
The JSB_glUniform2f function should define arg1 and arg2 as double or float, not int32_t.

This bug also exist in many other JSB_glUniformXXX functions.
And in the latest 3.0 beta version, these bugs still exist.