parent
f62519109d
commit
f54dd0a1fa
@ -96,6 +96,8 @@ int gmio_stla_infos_probe(
|
|||||||
|
|
||||||
if (flags == 0)
|
if (flags == 0)
|
||||||
return err;
|
return err;
|
||||||
|
if (flag_stla_solidname && infos->stla_solidname == NULL)
|
||||||
|
return GMIO_STL_ERROR_INFO_NULL_SOLIDNAME;
|
||||||
if (!gmio_check_memblock(&err, &opts->stream_memblock))
|
if (!gmio_check_memblock(&err, &opts->stream_memblock))
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
@ -127,18 +129,17 @@ int gmio_stla_infos_probe(
|
|||||||
gmio_stla_parse_solidname_beg(&parse_data);
|
gmio_stla_parse_solidname_beg(&parse_data);
|
||||||
|
|
||||||
/* Copy parsed solid name into infos->stla_solid_name */
|
/* Copy parsed solid name into infos->stla_solid_name */
|
||||||
{
|
const struct gmio_string* strbuff = &parse_data.token_str;
|
||||||
const struct gmio_string* strbuff = &parse_data.token_str;
|
const size_t name_len_for_cpy =
|
||||||
const size_t name_len_for_cpy =
|
GMIO_MIN(infos->stla_solidname_maxlen - 1, strbuff->len);
|
||||||
GMIO_MIN(infos->stla_solidname_maxlen - 1, strbuff->len);
|
|
||||||
|
strncpy(infos->stla_solidname, strbuff->ptr, name_len_for_cpy);
|
||||||
|
/* Null terminate C string */
|
||||||
|
if (name_len_for_cpy != 0)
|
||||||
|
infos->stla_solidname[name_len_for_cpy] = '\0';
|
||||||
|
else if (infos->stla_solidname_maxlen != 0)
|
||||||
|
infos->stla_solidname[0] = '\0';
|
||||||
|
|
||||||
strncpy(infos->stla_solidname, strbuff->ptr, name_len_for_cpy);
|
|
||||||
/* Null terminate C string */
|
|
||||||
if (name_len_for_cpy != 0)
|
|
||||||
infos->stla_solidname[name_len_for_cpy] = 0;
|
|
||||||
else if (infos->stla_solidname_maxlen != 0)
|
|
||||||
infos->stla_solidname[0] = 0;
|
|
||||||
}
|
|
||||||
sstream = parse_data.strstream;
|
sstream = parse_data.strstream;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,27 +48,33 @@ enum gmio_stl_error
|
|||||||
|
|
||||||
/*! Common STL write error indicating gmio_stl_mesh::func_get_triangle()
|
/*! Common STL write error indicating gmio_stl_mesh::func_get_triangle()
|
||||||
* pointer is NULL */
|
* pointer is NULL */
|
||||||
GMIO_STL_ERROR_NULL_FUNC_GET_TRIANGLE = GMIO_STL_ERROR_TAG + 0x02,
|
GMIO_STL_ERROR_NULL_FUNC_GET_TRIANGLE,
|
||||||
|
|
||||||
/* Specific error codes returned by STL_ascii read function */
|
/* Specific error codes returned by STL_ascii read function */
|
||||||
|
|
||||||
/*! Parsing error occured due to malformed STL ascii input */
|
/*! Parsing error occured due to malformed STL ascii input */
|
||||||
GMIO_STL_ERROR_PARSING = GMIO_STL_ERROR_TAG + 0x100,
|
GMIO_STL_ERROR_PARSING,
|
||||||
|
|
||||||
/*! Invalid max number of decimal significants digits must be in [1..9] */
|
/*! Invalid max number of decimal significants digits must be in [1..9] */
|
||||||
GMIO_STL_ERROR_INVALID_FLOAT32_PREC = GMIO_STL_ERROR_TAG + 0x101,
|
GMIO_STL_ERROR_INVALID_FLOAT32_PREC,
|
||||||
|
|
||||||
/* Specific error codes returned by STL_binary read/write functions */
|
/* Specific error codes returned by STL_binary read/write functions */
|
||||||
|
|
||||||
/*! The byte order argument supplied is not supported, must be little or
|
/*! The byte order argument supplied is not supported, must be little or
|
||||||
* big endian */
|
* big endian */
|
||||||
GMIO_STL_ERROR_UNSUPPORTED_BYTE_ORDER = GMIO_STL_ERROR_TAG + 0x1000,
|
GMIO_STL_ERROR_UNSUPPORTED_BYTE_ORDER,
|
||||||
|
|
||||||
/*! Error occured when reading header data in gmio_stlb_read() */
|
/*! Error occured when reading header data in gmio_stlb_read() */
|
||||||
GMIO_STL_ERROR_HEADER_WRONG_SIZE = GMIO_STL_ERROR_TAG + 0x1001,
|
GMIO_STL_ERROR_HEADER_WRONG_SIZE,
|
||||||
|
|
||||||
/*! Error occured when reading facet count in gmio_stlb_read() */
|
/*! Error occured when reading facet count in gmio_stlb_read() */
|
||||||
GMIO_STL_ERROR_FACET_COUNT = GMIO_STL_ERROR_TAG + 0x1002
|
GMIO_STL_ERROR_FACET_COUNT,
|
||||||
|
|
||||||
|
/* Specific error codes returned by STL infos probe functions */
|
||||||
|
|
||||||
|
/*! Flag \c GMIO_STLA_INFO_FLAG_SOLIDNAME is on but supplied
|
||||||
|
* gmio_stl_infos::stla_solidname string is NULL */
|
||||||
|
GMIO_STL_ERROR_INFO_NULL_SOLIDNAME
|
||||||
};
|
};
|
||||||
|
|
||||||
/*! @} */
|
/*! @} */
|
||||||
|
@ -61,6 +61,7 @@ const char* all_tests()
|
|||||||
UTEST_RUN(test_stl_internal__error_check);
|
UTEST_RUN(test_stl_internal__error_check);
|
||||||
|
|
||||||
UTEST_RUN(test_stl_infos);
|
UTEST_RUN(test_stl_infos);
|
||||||
|
UTEST_RUN(test_stl_infos_github8);
|
||||||
|
|
||||||
UTEST_RUN(test_stl_read);
|
UTEST_RUN(test_stl_read);
|
||||||
UTEST_RUN(test_stl_read_multi_solid);
|
UTEST_RUN(test_stl_read_multi_solid);
|
||||||
|
@ -101,3 +101,14 @@ static const char* test_stl_infos()
|
|||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char* test_stl_infos_github8()
|
||||||
|
{
|
||||||
|
const char* filepath = "models/solid_empty.stla";
|
||||||
|
struct gmio_stl_infos infos = {0};
|
||||||
|
infos.stla_solidname_maxlen = 512;
|
||||||
|
const int error = gmio_stl_infos_probe_file(
|
||||||
|
&infos, filepath, GMIO_STL_INFO_FLAG_ALL, NULL);
|
||||||
|
UTEST_COMPARE_INT(error, GMIO_STL_ERROR_INFO_NULL_SOLIDNAME);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user