summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2015-06-15 12:38:20 +1000
committer Vas Crabb <vas@vastheman.com>2015-06-15 12:38:50 +1000
commit277bd7e759a00e404ccfbd089cedaf4cd68cfd41 (patch)
tree4badf0369ad295bcfbb19b39bfb5b1cda8eb5335
parent215e9a8be91b6ef9b6ea43d1e9674b7abd661c23 (diff)
Fix off-by-one
-rw-r--r--src/osd/modules/opengl/gl_shader_tool.c29
1 files changed, 10 insertions, 19 deletions
diff --git a/src/osd/modules/opengl/gl_shader_tool.c b/src/osd/modules/opengl/gl_shader_tool.c
index 5d308882ed8..203869e308e 100644
--- a/src/osd/modules/opengl/gl_shader_tool.c
+++ b/src/osd/modules/opengl/gl_shader_tool.c
@@ -374,11 +374,6 @@ errout:
int gl_compile_shader_file( GLhandleARB *shader, GLenum type, const char * shader_file, int verbose )
{
- int err = 0, i, c;
- FILE * file = NULL;
- int buffer_len = 8192;
- GLcharARB *buffer=NULL;
-
if(shader==NULL || shader_file==NULL)
{
if(shader==NULL)
@@ -388,7 +383,7 @@ int gl_compile_shader_file( GLhandleARB *shader, GLenum type, const char * shade
return -1;
}
- file = fopen(shader_file, "r");
+ FILE *const file = fopen(shader_file, "r");
if(!file)
{
osd_printf_warning("cannot open shader_file: %s\n", shader_file);
@@ -397,23 +392,20 @@ int gl_compile_shader_file( GLhandleARB *shader, GLenum type, const char * shade
// get the real file size
fseek(file, 0, SEEK_END);
- buffer_len = (int)ftell(file);
+ int const buffer_len = (int)ftell(file);
fseek(file, 0, SEEK_SET);
- buffer = (GLcharARB *) malloc(buffer_len);
- memset(buffer, 0, buffer_len);
+ GLcharARB *const buffer = (GLcharARB *)malloc(buffer_len + 1);
+ memset(buffer, 0, buffer_len + 1);
- /* Load Shader Sources */
- i=0;
- while( i<buffer_len-1 && EOF!=(c=fgetc(file)) )
- buffer[i++]=(char)c;
+ /* Load Shader Sources */
+ for( int i = 0, c = 0; i<buffer_len && EOF!=(c=fgetc(file)); i++ )
+ buffer[i]=(char)c;
fclose(file);
- buffer[i]='\0';
-
- err=gl_compile_shader_source(shader, type, buffer, verbose);
- if(err) goto errout;
+ int const err=gl_compile_shader_source(shader, type, buffer, verbose);
free(buffer);
+ if(err) goto errout;
if(verbose)
osd_printf_warning("shader file: %s\n", shader_file);
@@ -421,9 +413,8 @@ int gl_compile_shader_file( GLhandleARB *shader, GLenum type, const char * shade
return 0;
errout:
- free(buffer);
osd_printf_warning("failed to process shader_file: %s\n", shader_file);
- return err;
+ return err;
}