The difference being const GLchar **string, vs const GLchar* const* string
That means that if you have a function pointer to glShaderSource using the old definition, and assign the new function to it, it will fail to compile.
(And I know that code using function pointers to core functionality is insane, but it is better than using ifdefs to switch between using function pointers where that functionality is extension-only, and real function declarations where it is core functionality)
glShaderSource is defined in the GLES2 spec as so:
void glShaderSource( GLuint shader,
GLsizei count,
const GLchar **string,
const GLint *length);
However trunk mesa (and 9.1.0) has a definition like this:
GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length);
The difference being const GLchar **string, vs const GLchar* const* string
That means that if you have a function pointer to glShaderSource using the old definition, and assign the new function to it, it will fail to compile.
(And I know that code using function pointers to core functionality is insane, but it is better than using ifdefs to switch between using function pointers where that functionality is extension-only, and real function declarations where it is core functionality)