diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-09-11 22:48:28 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-09-11 22:48:28 -0700 |
commit | ce937a42102cf549662678cd91026f6aa1b0a7cd (patch) | |
tree | 390412cb207bcb3fec3f65eb5addc276de83b169 /parser.c | |
parent | 67b7bc2d2aee78a9fefce12ed9fd252fbd7f1474 (diff) | |
download | txr-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.c | 16 |
1 files changed, 14 insertions, 2 deletions
@@ -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); |