summaryrefslogtreecommitdiff
path: root/main.cpp
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2010-06-23 15:47:04 -0700
committerCarl Worth <cworth@cworth.org>2010-06-23 16:35:45 -0700
commitf961e4458f1e894ca782c1627b69cdee993a16f8 (patch)
tree2df145299ce4f02edbb7a2cf3ecce3fe4f3a2ac6 /main.cpp
parent2d2561ef9696aa5ff0c1a85e3a4a95475f927935 (diff)
glsl_symbol_table: Add new talloc-based new()
We take advantage of overloading of the new operator (with an additional parameter!) to make this look as "C++ like" as possible. This closes 507 memory leaks when compiling glsl-orangebook-ch06-bump.frag when measured with: valgrind ./glsl glsl-orangebook-ch06-bump.frag as seen here: total heap usage: 55,623 allocs, 14,389 frees (was 13,882 frees before)
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp6
1 files changed, 1 insertions, 5 deletions
diff --git a/main.cpp b/main.cpp
index f56e6f6142..dcd4b8f672 100644
--- a/main.cpp
+++ b/main.cpp
@@ -29,10 +29,6 @@
#include <fcntl.h>
#include <unistd.h>
-extern "C" {
-#include <talloc.h>
-}
-
#include "ast.h"
#include "glsl_parser_extras.h"
#include "glsl_parser.h"
@@ -118,7 +114,7 @@ compile_shader(struct glsl_shader *shader)
state->scanner = NULL;
state->translation_unit.make_empty();
- state->symbols = new glsl_symbol_table;
+ state->symbols = new(shader) glsl_symbol_table;
state->info_log = talloc_strdup(shader, "");
state->error = false;
state->temp_index = 0;