|
|
@@ -551,8 +551,8 @@ get_format_string(bool pad) const {
|
|
|
}
|
|
|
|
|
|
// Synthesize the format string.
|
|
|
- char *fmt = (char*) malloc(row_size + 1);
|
|
|
- memset((void*) fmt, 0, row_size + 1);
|
|
|
+ char *fmt = (char *)alloca(row_size + 1);
|
|
|
+ memset((void *)fmt, 0, row_size + 1);
|
|
|
int fi = 0;
|
|
|
int offset = 0;
|
|
|
|
|
|
@@ -566,6 +566,7 @@ get_format_string(bool pad) const {
|
|
|
}
|
|
|
|
|
|
char fmt_code = 'x';
|
|
|
+ int num_components = column->get_num_components();
|
|
|
switch (column->get_numeric_type()) {
|
|
|
case NT_uint8:
|
|
|
fmt_code = 'B';
|
|
|
@@ -578,6 +579,7 @@ get_format_string(bool pad) const {
|
|
|
case NT_uint32:
|
|
|
case NT_packed_dcba:
|
|
|
case NT_packed_dabc:
|
|
|
+ case NT_packed_ufloat:
|
|
|
fmt_code = 'I';
|
|
|
break;
|
|
|
|
|
|
@@ -604,22 +606,21 @@ get_format_string(bool pad) const {
|
|
|
default:
|
|
|
gobj_cat.error()
|
|
|
<< "Unknown numeric type " << column->get_numeric_type() << "!\n";
|
|
|
- return nullptr;
|
|
|
+ num_components *= column->get_component_bytes();
|
|
|
}
|
|
|
- memset((void*) (fmt + fi), fmt_code, column->get_num_components());
|
|
|
+ memset((void*) (fmt + fi), fmt_code, num_components);
|
|
|
offset += column->get_total_bytes();
|
|
|
- fi += column->get_num_components();
|
|
|
+ fi += num_components;
|
|
|
}
|
|
|
|
|
|
if (offset < row_size) {
|
|
|
// Add padding bytes.
|
|
|
int pad = row_size - offset;
|
|
|
- memset((void*) (fmt + fi), 'x', pad);
|
|
|
+ memset((void *)(fmt + fi), 'x', pad);
|
|
|
+ ++fi;
|
|
|
}
|
|
|
|
|
|
- std::string fmt_string (fmt);
|
|
|
- free(fmt);
|
|
|
- return fmt_string;
|
|
|
+ return std::string(fmt, (size_t)fi);
|
|
|
}
|
|
|
|
|
|
/**
|