summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2009-11-02 19:09:45 -0800
committerKaz Kylheku <kaz@kylheku.com>2009-11-02 19:09:45 -0800
commit0f9f85d9edaa26285d596f5fe7ee04ff95a2aa84 (patch)
tree451a2b8684468d3ebe62b37f9b6cad4385a729f0 /lib.c
parentf6c4f253681b576f39d939e602e9de7bc1b8892b (diff)
downloadtxr-0f9f85d9edaa26285d596f5fe7ee04ff95a2aa84.tar.gz
txr-0f9f85d9edaa26285d596f5fe7ee04ff95a2aa84.tar.bz2
txr-0f9f85d9edaa26285d596f5fe7ee04ff95a2aa84.zip
Got regex working over lazy strings from freeform.
Bugfixes.
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib.c b/lib.c
index b942703a..2bf937aa 100644
--- a/lib.c
+++ b/lib.c
@@ -736,7 +736,7 @@ obj_t *length_str(obj_t *str)
if (str->ls.type == LSTR) {
lazy_str_force(str);
- return length(str->ls.prefix);
+ return length_str(str->ls.prefix);
}
if (!str->st.len)
@@ -1391,10 +1391,13 @@ obj_t *lazy_str_force(obj_t *lstr)
} else while (gt(lim, zero) && lstr->ls.list) {
lstr->ls.prefix = cat_str(list(lstr->ls.prefix, car(lstr->ls.list), nao),
or2(car(lstr->ls.opts), string("\n")));
- lstr->ls.list = nil;
+ lstr->ls.list = cdr(lstr->ls.list);
lim = minus(lim, one);
}
+ if (lim)
+ *cdr_l(lstr->ls.opts) = lim;
+
return lstr->ls.prefix;
}