[svn-r16859] I fixed some memory leak of H5LTdtype_to_text in the HL library. I fixed some test

verification, too.

Tested on jam - simple change.
This commit is contained in:
Raymond Lu 2009-04-24 16:13:20 -05:00
parent 8dd1e72365
commit cdcd4a7305
2 changed files with 22 additions and 9 deletions

View File

@ -1792,6 +1792,7 @@ herr_t H5LTdtype_to_text(hid_t dtype, char *str, H5LT_lang_t lang_type, size_t *
if((ret = H5LT_dtype_to_text(dtype, &text_str, lang_type, &str_len, 1)) < 0)
goto out;
*len = strlen(text_str) + 1;
free(text_str);
} else if(len && str) {
if((ret = H5LT_dtype_to_text(dtype, &str, lang_type, len, 0)) < 0)
goto out;
@ -2076,6 +2077,9 @@ next:
break;
}
case H5T_OPAQUE:
{
char *tag;
/* Print lead-in */
sprintf(*dt_str, "H5T_OPAQUE {\n");
indent += COL;
@ -2085,7 +2089,12 @@ next:
strcat(*dt_str, tmp_str);
indentation(indent + COL, *dt_str);
sprintf(tmp_str, "OPQ_TAG \"%s\";\n", H5Tget_tag(dtype));
tag = H5Tget_tag(dtype);
if(tag) {
sprintf(tmp_str, "OPQ_TAG \"%s\";\n", tag);
free(tag);
} else
sprintf(tmp_str, "OPQ_TAG \"\";\n");
strcat(*dt_str, tmp_str);
/* Print closing */
@ -2094,6 +2103,7 @@ next:
strcat(*dt_str, "}");
break;
}
case H5T_ENUM:
{
hid_t super;

View File

@ -1317,10 +1317,12 @@ static int test_enums(void)
dt_str = (char*)calloc(str_len, sizeof(char));
if(H5LTdtype_to_text(dtype, dt_str, H5LT_DDL, &str_len)<0)
goto out;
/*if(strcmp(dt_str, "H5T_ENUM {\n H5T_STD_I32LE;\n \"RED\" 5;\n \"GREEN\" 6;\n \"BLUE\" 7;\n \"WHITE\" 8;\n }")) {
printf("dt=\n%s\n", dt_str);
goto out;
}*/
if(strcmp(dt_str, "H5T_ENUM {\n H5T_STD_I32LE;\n \"RED\" 5;\n \"GREEN\" 6;\n \"BLUE\" 7;\n \"WHITE\" 8;\n }")) {
printf("dt=\n%s\n", dt_str);
goto out;
}
free(dt_str);
if(H5Tclose(dtype)<0)
@ -1427,10 +1429,11 @@ static int test_arrays(void)
dt_str = (char*)calloc(str_len, sizeof(char));
if(H5LTdtype_to_text(dtype, dt_str, H5LT_DDL, &str_len)<0)
goto out;
/*if(strcmp(dt_str, "H5T_ARRAY { [5][7][13] H5T_ARRAY { [17][19] H5T_COMPOUND { H5T_STD_I8BE \"arr_compound_1\"; H5T_STD_I32BE \"arr_compound_2\"; } } }")) {
printf("dt=\n%s\n", dt_str);
goto out;
}*/
if(strcmp(dt_str, "H5T_ARRAY {\n [5][7][13] H5T_ARRAY {\n [17][19] H5T_COMPOUND {\n H5T_STD_I8BE \"arr_compound_1\" : 0;\n H5T_STD_I32BE \"arr_compound_2\" : 1;\n }\n }\n }")) {
printf("dt=\n%s\n", dt_str);
goto out;
}
free(dt_str);
if(H5Tclose(dtype)<0)