summaryrefslogtreecommitdiffstats
path: root/libdimension/csg.c
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@gmail.com>2011-05-16 23:25:53 -0600
committerTavian Barnes <tavianator@gmail.com>2011-05-16 23:25:53 -0600
commitd374841194f24c7cb1cdc52fc631fcb2982af358 (patch)
treefa92504fb50c6a4195317dad653ed3ab72fa6f27 /libdimension/csg.c
parent719fea8f97320814835408fad6ce2a4647674c11 (diff)
downloaddimension-d374841194f24c7cb1cdc52fc631fcb2982af358.tar.xz
Add a refcount to objects.
Diffstat (limited to 'libdimension/csg.c')
-rw-r--r--libdimension/csg.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libdimension/csg.c b/libdimension/csg.c
index caecee0..0222b8b 100644
--- a/libdimension/csg.c
+++ b/libdimension/csg.c
@@ -92,9 +92,11 @@ dmnsn_new_csg_union(const dmnsn_array *objects)
dmnsn_object *csg = dmnsn_new_object();
DMNSN_ARRAY_FOREACH (dmnsn_object **, object, objects) {
+ DMNSN_INCREF(*object);
dmnsn_array_push(csg->children, object);
}
+ csg->ptr = NULL;
csg->intersection_fn = dmnsn_csg_union_intersection_fn;
csg->inside_fn = dmnsn_csg_union_inside_fn;
csg->initialize_fn = dmnsn_csg_union_initialize_fn;
@@ -234,6 +236,8 @@ dmnsn_new_csg_intersection(dmnsn_object *A, dmnsn_object *B)
{
dmnsn_object *csg = dmnsn_new_object();
+ DMNSN_INCREF(A);
+ DMNSN_INCREF(B);
dmnsn_object **params = dmnsn_malloc(2*sizeof(dmnsn_object *));
params[0] = A;
params[1] = B;
@@ -292,6 +296,8 @@ dmnsn_new_csg_difference(dmnsn_object *A, dmnsn_object *B)
{
dmnsn_object *csg = dmnsn_new_object();
+ DMNSN_INCREF(A);
+ DMNSN_INCREF(B);
dmnsn_object **params = dmnsn_malloc(2*sizeof(dmnsn_object *));
params[0] = A;
params[1] = B;
@@ -353,6 +359,8 @@ dmnsn_new_csg_merge(dmnsn_object *A, dmnsn_object *B)
{
dmnsn_object *csg = dmnsn_new_object();
+ DMNSN_INCREF(A);
+ DMNSN_INCREF(B);
dmnsn_object **params = dmnsn_malloc(2*sizeof(dmnsn_object *));
params[0] = A;
params[1] = B;