Mesa (master): mesa: Fix substitution of large shaders
Courtney Goeltzenleuchter
courtney at kemper.freedesktop.org
Tue Jun 10 16:48:45 UTC 2014
Module: Mesa
Branch: master
Commit: 3eef571cbc3a311f32372ab9d1310ed787f9cfbd
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3eef571cbc3a311f32372ab9d1310ed787f9cfbd
Author: Cody Northrop <cody at lunarg.com>
Date: Thu Jun 5 11:27:51 2014 -0600
mesa: Fix substitution of large shaders
Signed-off-by: Cody Northrop <cody at lunarg.com>
Reviewed-by: Brian Paul <brianp at vmware.com>
---
src/mesa/main/shaderapi.c | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c
index 28739da..2ec2444 100644
--- a/src/mesa/main/shaderapi.c
+++ b/src/mesa/main/shaderapi.c
@@ -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);
More information about the mesa-commit
mailing list