summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--regex.c10
-rw-r--r--socket.c2
-rw-r--r--stream.c2
3 files changed, 9 insertions, 5 deletions
diff --git a/regex.c b/regex.c
index e8de118c..faf38965 100644
--- a/regex.c
+++ b/regex.c
@@ -2554,7 +2554,7 @@ val read_until_match(val regex, val stream_in, val include_match_in)
goto out_match;
while (stack)
- unget_char(pop(&stack), stream);
+ unget_char(rcyc_pop(&stack), stream);
ch = get_char(stream);
@@ -2580,14 +2580,18 @@ val read_until_match(val regex, val stream_in, val include_match_in)
if (nil) {
out_match:
while (stack != match)
- unget_char(pop(&stack), stream);
+ unget_char(rcyc_pop(&stack), stream);
if (!out)
out = null_string;
if (include_match)
- out = cat_str(cons(out, nreverse(stack)), nil);
+ out = cat_str(cons(out, stack = nreverse(stack)), nil);
}
regex_machine_cleanup(&regm);
+
+ while (stack)
+ rcyc_pop(&stack);
+
return out;
}
diff --git a/socket.c b/socket.c
index 102127b9..5871632e 100644
--- a/socket.c
+++ b/socket.c
@@ -436,7 +436,7 @@ static val dgram_get_char(val stream)
struct dgram_stream *d = coerce(struct dgram_stream *, stream->co.handle);
if (d->unget_c) {
- return pop(&d->unget_c);
+ return rcyc_pop(&d->unget_c);
} else {
wint_t ch = utf8_decode(&d->ud, dgram_get_byte_callback,
coerce(mem_t *, d));
diff --git a/stream.c b/stream.c
index 774359f4..3acf430a 100644
--- a/stream.c
+++ b/stream.c
@@ -685,7 +685,7 @@ static val stdio_get_char(val stream)
struct stdio_handle *h = coerce(struct stdio_handle *, stream->co.handle);
if (h->unget_c)
- return pop(&h->unget_c);
+ return rcyc_pop(&h->unget_c);
if (h->f) {
wint_t ch = utf8_decode(&h->ud, stdio_get_char_callback,