main: Close memory leak of shader string from load_text_file.

Could have just added a call to free() to main, but since we're using
talloc everywhere else, we might as well just use it here too. So pass
a new 'ctx' argument to load_text_file.

This removes a single memory leak from all invocations of the
standalone glsl compiler.
This commit is contained in:
Carl Worth 2010-06-18 17:37:02 -07:00
parent 007efe50fd
commit a9696e79fb

View file

@ -36,9 +36,9 @@
#include "ir_print_visitor.h" #include "ir_print_visitor.h"
#include "program.h" #include "program.h"
/* Returned string will have 'ctx' as its talloc owner. */
static char * static char *
load_text_file(const char *file_name, size_t *size) load_text_file(void *ctx, const char *file_name, size_t *size)
{ {
char *text = NULL; char *text = NULL;
struct stat st; struct stat st;
@ -51,7 +51,7 @@ load_text_file(const char *file_name, size_t *size)
} }
if (fstat(fd, & st) == 0) { if (fstat(fd, & st) == 0) {
text = (char *) malloc(st.st_size + 1); text = (char *) talloc_size(ctx, st.st_size + 1);
if (text != NULL) { if (text != NULL) {
do { do {
ssize_t bytes = read(fd, text + total_read, ssize_t bytes = read(fd, text + total_read,
@ -229,7 +229,8 @@ main(int argc, char **argv)
else else
usage_fail(argv[0]); usage_fail(argv[0]);
shader->Source = load_text_file(argv[optind], &shader->SourceLen); shader->Source = load_text_file(whole_program,
argv[optind], &shader->SourceLen);
if (shader->Source == NULL) { if (shader->Source == NULL) {
printf("File \"%s\" does not exist.\n", argv[optind]); printf("File \"%s\" does not exist.\n", argv[optind]);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);