diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2012-04-02 15:59:10 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2012-04-02 15:59:10 -0700 |
commit | 6c4da3e5e1cb02f4d4e522626579cbded546059a (patch) | |
tree | 9d7768ffa95564e86412495e2733875246d3cad2 /lib.c | |
parent | 87ed8a692c059f1e81f8deeea3b4f727044a45fa (diff) | |
download | txr-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.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -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; } |