diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2009-11-02 19:09:45 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2009-11-02 19:09:45 -0800 |
commit | 0f9f85d9edaa26285d596f5fe7ee04ff95a2aa84 (patch) | |
tree | 451a2b8684468d3ebe62b37f9b6cad4385a729f0 /lib.c | |
parent | f6c4f253681b576f39d939e602e9de7bc1b8892b (diff) | |
download | txr-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.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -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; } |