mesa: Fix substitution of large shaders

Signed-off-by: Cody Northrop <cody@lunarg.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
Cody Northrop
2014-06-05 11:27:51 -06:00
committed by Courtney Goeltzenleuchter
parent 2d399bb183
commit 3eef571cbc
+14 -3
View File
@@ -1392,7 +1392,7 @@ _mesa_LinkProgram(GLhandleARB programObj)
static GLcharARB *
read_shader(const char *fname)
{
const int max = 50*1000;
int shader_size = 0;
FILE *f = fopen(fname, "r");
GLcharARB *buffer, *shader;
int len;
@@ -1401,8 +1401,19 @@ read_shader(const char *fname)
return NULL;
}
buffer = malloc(max);
len = fread(buffer, 1, max, f);
/* allocate enough room for the entire shader */
fseek(f, 0, SEEK_END);
shader_size = ftell(f);
rewind(f);
assert(shader_size);
/* add one for terminating zero */
shader_size++;
buffer = malloc(shader_size);
assert(buffer);
len = fread(buffer, 1, shader_size, f);
buffer[len] = 0;
fclose(f);