Shader setUniform not working with JSBinding

I made this simple app to test shaders setUniform.
I’m working with cocos2d-js 3.9, the problem happens when compiling the native version of iOS.

The javascript code is the following:

var sp = new cc.Sprite(img);
shader = new cc.GLProgram();
shader.retain();
shader.init(res.colored_vsh, res.colored_fsh);
shader.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION);
shader.addAttribute(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR);
shader.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS);
shader.link();
shader.updateUniforms();
sp.setShaderProgram(shader);
shader.use();
var color_mult_loc = shader.getUniformLocationForName('color_m');
shader.setUniformLocationWith1f(color_mult_loc, 1);

The problem is with the uniform color_m in the fragment shader, the code is:

precision lowp float;
varying vec4 v_fragmentColor; 
varying vec2 v_texCoord; 
uniform float color_m;

void main() 
{ 
    vec4 v_orColor = v_fragmentColor * texture2D(CC_Texture0, v_texCoord);

    gl_FragColor = vec4(v_orColor.r * color_m, v_orColor.g, v_orColor.b, v_orColor.a);
}

which in browser shows:

but in iOS shows:

as you can see, in browser the value of the uniform color_m is 1, which is fine because of the line shader.setUniformLocationWith1f(color_mult_loc, 1);, but in iOS is 0. You can see in the second image how the red channel is mutiplied by 0.

Any help in what I’m doing wrong would be much appreciated.

I’m having the same problem in Android.

Can anyone help me with this? I can’t find a solution.

Should I report this as an issue in github?