pthread_mutex_t lock;
struct list_head subbuf_list;
struct tip_subbuf *leftover_ts;
- unsigned int leftover_ts_offset;
};
struct device_information {
if (tip->leftover_ts) {
struct tip_subbuf *prev_ts = tip->leftover_ts;
- offset = tip->leftover_ts_offset;
- if (offset + prev_ts->len + ts->len > prev_ts->max_len) {
+ if (prev_ts->len + ts->len > prev_ts->max_len) {
prev_ts->max_len += ts->len;
prev_ts->buf = realloc(prev_ts->buf, prev_ts->max_len);
}
- memcpy(prev_ts->buf + offset + ts->len, ts->buf, ts->len);
+ memcpy(prev_ts->buf + prev_ts->len, ts->buf, ts->len);
prev_ts->len += ts->len;
free(ts->buf);
*/
if (offset != ts->len) {
tip->leftover_ts = ts;
- tip->leftover_ts_offset = offset;
+ ts->len -= offset;
+ memmove(ts->buf, ts->buf + offset, ts->len);
} else {
free(ts->buf);
free(ts);
tip->events_processed = 0;
INIT_LIST_HEAD(&tip->subbuf_list);
tip->leftover_ts = NULL;
- tip->leftover_ts_offset = 0;
if (pipeline) {
tip->ofile = fdopen(STDOUT_FILENO, "w");