input/csv: Fix a false negative after successful import
The input module runs receive() and end() invocations which end up calling process_buffer(). It's perfectly legal to call the process routine with an empty accumulation buffer, especially when the process routine was called from end(). This fixes a condition where PulseView raised a fatal error at the end of a completed successful import. Reported-By: Sergey Alirzaev <zl29ah@gmail.com>
This commit is contained in:
parent
f9b7486154
commit
4555d3bda0
|
@ -644,11 +644,18 @@ static int process_buffer(struct sr_input *in)
|
||||||
else
|
else
|
||||||
max_columns = 1;
|
max_columns = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Consider empty input non-fatal. Keep accumulating input until
|
||||||
|
* at least one full text line has become available. Grab the
|
||||||
|
* maximum amount of accumulated data that consists of full text
|
||||||
|
* lines, and process what has been received so far, leaving not
|
||||||
|
* yet complete lines for the next invocation.
|
||||||
|
*/
|
||||||
|
if (!in->buf->len)
|
||||||
|
return SR_OK;
|
||||||
p = g_strrstr_len(in->buf->str, in->buf->len, inc->termination);
|
p = g_strrstr_len(in->buf->str, in->buf->len, inc->termination);
|
||||||
if (!p)
|
if (!p)
|
||||||
/* Don't have a full line. */
|
|
||||||
return SR_ERR;
|
return SR_ERR;
|
||||||
|
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
g_strstrip(in->buf->str);
|
g_strstrip(in->buf->str);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue