* use zero terminated data in continuous sample
* don't call strlen() for empty strings
* make sure library check for data size during printing
Unfortunately, previous library versions support cell data buffer
update without inform library about a change.
Signed-off-by: Karel Zak <kzak@redhat.com>
struct libscols_line *line;
struct timeval now;
int done = 0;
- char *timecell = xmalloc( timecellsz );
+ char *timecell = xcalloc(1, timecellsz );
line = add_line(tb, i);
ce->is_filled = 1;
rc = strdup_to_struct_member(ce, data, data);
- ce->datasiz = ce->data ? strlen(ce->data) + 1: 0;
+ ce->datasiz = ce->data && *ce->data ? strlen(ce->data) + 1: 0;
return rc;
}
return -EINVAL;
free(ce->data);
ce->data = data;
- ce->datasiz = ce->data ? strlen(ce->data) + 1: 0;
+ ce->datasiz = ce->data && *ce->data ? strlen(ce->data) + 1: 0;
ce->is_filled = 1;
return 0;
}
i++;
}
- /* Wrapping disabled; let's use data as a classig string. */
+ /* Wrapping disabled; let's use data as a classic string. */
} else {
data = scols_cell_get_data(ce);
datasiz = scols_cell_get_datasiz(ce);
+ if (data && *data && !datasiz)
+ datasiz = strlen(data); /* cell content may be updated */
+
if (data && datasiz)
rc = ul_buffer_append_data(buf, data, datasiz);
}