diff options
Diffstat (limited to 'src/glsl/list.h')
-rw-r--r-- | src/glsl/list.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/glsl/list.h b/src/glsl/list.h index 7732d66d7a6..d449bdd8b12 100644 --- a/src/glsl/list.h +++ b/src/glsl/list.h @@ -272,6 +272,25 @@ struct exec_list { struct exec_node *tail_pred; #ifdef __cplusplus + /* Callers of this talloc-based new need not call delete. It's + * easier to just talloc_free 'ctx' (or any of its ancestors). */ + static void* operator new(size_t size, void *ctx) + { + void *node; + + node = talloc_size(ctx, size); + assert(node != NULL); + + return node; + } + + /* If the user *does* call delete, that's OK, we will just + * talloc_free in that case. */ + static void operator delete(void *node) + { + talloc_free(node); + } + exec_list() { make_empty(); |