summaryrefslogtreecommitdiffstats
path: root/parser.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-09-11 22:48:28 -0700
committerKaz Kylheku <kaz@kylheku.com>2015-09-11 22:48:28 -0700
commitce937a42102cf549662678cd91026f6aa1b0a7cd (patch)
tree390412cb207bcb3fec3f65eb5addc276de83b169 /parser.c
parent67b7bc2d2aee78a9fefce12ed9fd252fbd7f1474 (diff)
downloadtxr-ce937a42102cf549662678cd91026f6aa1b0a7cd.tar.gz
txr-ce937a42102cf549662678cd91026f6aa1b0a7cd.tar.bz2
txr-ce937a42102cf549662678cd91026f6aa1b0a7cd.zip
Treat comment lines in repl, and plug memory leak.
* parser.c (repl): If we continue the loop due to detecting a blank line, we must free that line, since we are outside of the unwind block (and continue would violate that block if we were). If a line contains nothing but a comment, then enter that line into the history. * txr.1: Documented treatment of commented lines.
Diffstat (limited to 'parser.c')
-rw-r--r--parser.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/parser.c b/parser.c
index 48449dc8..8719b03d 100644
--- a/parser.c
+++ b/parser.c
@@ -581,8 +581,20 @@ val repl(val bindings, val in_stream, val out_stream)
break;
}
- if (strspn(line_u8, " \t") == strlen(line_u8))
- continue;
+ {
+ size_t wsp = strspn(line_u8, " \t\n\r");
+
+ if (line_u8[wsp] == 0) {
+ free(line_u8);
+ continue;
+ }
+
+ if (line_u8[wsp] == ';') {
+ lino_hist_add(ls, line_u8);
+ free(line_u8);
+ continue;
+ }
+ }
counter = succ(counter);