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 <redacted>
else
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);
if (!p)
- /* Don't have a full line. */
return SR_ERR;
-
*p = '\0';
g_strstrip(in->buf->str);