]> sigrok.org Git - libsigrok.git/commitdiff
input/csv: Correctly skip over last processed end-of-line sequence
authorGerhard Sittig <redacted>
Mon, 5 Jun 2017 14:41:42 +0000 (16:41 +0200)
committerUwe Hermann <redacted>
Tue, 6 Jun 2017 21:28:00 +0000 (23:28 +0200)
The CSV input module supports variable length end-of-line encodings
(either CRLF, or CR, or LF). When a bunch of accumulated text lines got
processed, do skip the corresponding number of characters after the end
of the last processed line.

This fixes one of the issues discussed in bug #635.

src/input/csv.c

index 5399027bf823305ab0a33c79b02ec9783e1ca5c3..d58e003146f662d177823506d018e91364514ddd 100644 (file)
@@ -657,6 +657,7 @@ static int process_buffer(struct sr_input *in)
        if (!p)
                return SR_ERR;
        *p = '\0';
+       p += strlen(inc->termination);
        g_strstrip(in->buf->str);
 
        ret = SR_OK;
@@ -725,7 +726,7 @@ static int process_buffer(struct sr_input *in)
                g_strfreev(columns);
        }
        g_strfreev(lines);
-       g_string_erase(in->buf, 0, p - in->buf->str + 1);
+       g_string_erase(in->buf, 0, p - in->buf->str);
 
        return ret;
 }