summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2012-04-02 15:59:10 -0700
committerKaz Kylheku <kaz@kylheku.com>2012-04-02 15:59:10 -0700
commit6c4da3e5e1cb02f4d4e522626579cbded546059a (patch)
tree9d7768ffa95564e86412495e2733875246d3cad2 /lib.c
parent87ed8a692c059f1e81f8deeea3b4f727044a45fa (diff)
downloadtxr-6c4da3e5e1cb02f4d4e522626579cbded546059a.tar.gz
txr-6c4da3e5e1cb02f4d4e522626579cbded546059a.tar.bz2
txr-6c4da3e5e1cb02f4d4e522626579cbded546059a.zip
* lib.c (vec_set_length): Use set instead of assignment.
(vecref_l): Use loc to lift address of cell. (replace_vec): Use macro mut to indicate the object is being mutated. * lib.h (mut): New macro.
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib.c b/lib.c
index 6703c024..8e17893c 100644
--- a/lib.c
+++ b/lib.c
@@ -3063,7 +3063,7 @@ val vec_set_length(val vec, val length)
val *newvec = (val *) chk_realloc((mem_t *) (vec->v.vec - 2),
(new_alloc + 2) * sizeof *newvec);
vec->v.vec = newvec + 2;
- vec->v.vec[vec_alloc] = num(new_alloc);
+ set(vec->v.vec[vec_alloc], num(new_alloc));
#ifdef HAVE_VALGRIND
vec->v.vec_true_start = newvec;
#endif
@@ -3075,7 +3075,7 @@ val vec_set_length(val vec, val length)
vec->v.vec[i] = nil;
}
- vec->v.vec[vec_length] = length;
+ set(vec->v.vec[vec_length], length);
}
return vec;
@@ -3096,7 +3096,7 @@ val *vecref_l(val vec, val ind)
cnum index = c_num(ind);
cnum len = c_num(length_vec(vec));
range_bug_unless (index >= 0 && index < len);
- return vec->v.vec + index;
+ return loc(vec->v.vec[index]);
}
val vec_push(val vec, val item)
@@ -3261,6 +3261,7 @@ val replace_vec(val vec_in, val items, val from, val to)
if (vectorp(items)) {
memcpy(vec_in->v.vec + c_num(from), items->v.vec,
sizeof *vec_in->v.vec * c_num(len_it));
+ mut(vec_in);
} else if (stringp(items)) {
cnum f = c_num(from);
cnum t = c_num(to);
@@ -3276,6 +3277,7 @@ val replace_vec(val vec_in, val items, val from, val to)
for (iter = items; iter && f != t; iter = cdr(iter), f++)
vec_in->v.vec[f] = car(iter);
+ mut(vec_in);
}
return vec_in;
}