Skip to content

Commit cc139bc

Browse files
committed
Make check work for copied datatype IDs to fix #386
1 parent 77061bb commit cc139bc

1 file changed

Lines changed: 7 additions & 3 deletions

File tree

src/napi5.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2487,6 +2487,7 @@ NXstatus NX5getattra(NXhandle handle, char* name, void* data)
24872487
hid_t memtype_id, filespace, datatype;
24882488
H5T_class_t tclass;
24892489
hsize_t ndims, dims[H5S_MAX_RANK];
2490+
htri_t is_vlen_str = 0; /* false */
24902491
char **vstrdata = NULL;
24912492

24922493
pFile = NXI5assert(handle);
@@ -2506,7 +2507,10 @@ NXstatus NX5getattra(NXhandle handle, char* name, void* data)
25062507
NXReportError("ERROR: unable to read dims");
25072508
return NX_ERROR;
25082509
}
2509-
if (ndims == 0 && H5Tis_variable_str(datatype)) {
2510+
2511+
is_vlen_str = H5Tis_variable_str(datatype);
2512+
if (ndims == 0 && is_vlen_str) {
2513+
/* this assumes a fixed size - is this dangerous? */
25102514
char *strdata = calloc(512, sizeof(char));
25112515
status = H5Aread(pFile->iCurrentA, H5S_ALL, &strdata);
25122516
if (status >= 0)
@@ -2521,7 +2525,7 @@ NXstatus NX5getattra(NXhandle handle, char* name, void* data)
25212525
}
25222526
tclass = H5Tget_class(datatype);
25232527
/* stop gap kludge for fixed length strings */
2524-
if (tclass == H5T_C_S1) {
2528+
if (tclass == H5T_STRING && !is_vlen_str) {
25252529
char *datatmp = NULL;
25262530
status = readStringAttribute(pFile->iCurrentA, &datatmp);
25272531
if (status < 0)
@@ -2533,7 +2537,7 @@ NXstatus NX5getattra(NXhandle handle, char* name, void* data)
25332537

25342538
memset(iStart, 0, H5S_MAX_RANK * sizeof(int));
25352539
/* map datatypes of other plateforms */
2536-
if (H5Tis_variable_str(datatype)) {
2540+
if (is_vlen_str) {
25372541
vstrdata = (char **)malloc((size_t) dims[0] * sizeof(char *));
25382542
memtype_id = H5Tcopy(H5T_C_S1);
25392543
H5Tset_size(memtype_id, H5T_VARIABLE);

0 commit comments

Comments
 (0)