Source
455
455
CHECK(att1, FAIL, "H5Acreate2");
456
456
457
457
data.string = string_att1;
458
458
459
459
ret = H5Awrite(att1, type, &data);
460
460
CHECK(ret, FAIL, "H5Awrite");
461
461
462
462
ret = H5Aread(att1, type, &data_check);
463
463
CHECK(ret, FAIL, "H5Aread");
464
464
465
-
HDfree(data_check.string);
465
+
ret = H5Dvlen_reclaim(type, dataspace, H5P_DEFAULT, &data_check);
466
+
CHECK(ret, FAIL, "H5Dvlen_reclaim");
466
467
467
468
ret = H5Aclose(att1);
468
469
CHECK(ret, FAIL, "HAclose");
469
470
470
471
ret = H5Gclose(root1);
471
472
CHECK(ret, FAIL, "H5Gclose");
472
473
473
474
ret = H5Fclose(file1);
474
475
CHECK(ret, FAIL, "H5Fclose");
475
476
480
481
CHECK(att2, FAIL, "H5Acreate2");
481
482
482
483
data.string = string_att2;
483
484
484
485
ret = H5Awrite(att2, type, &data);
485
486
CHECK(ret, FAIL, "H5Awrite");
486
487
487
488
ret = H5Aread(att2, type, &data_check);
488
489
CHECK(ret, FAIL, "H5Aread");
489
490
490
-
HDfree(data_check.string);
491
+
ret = H5Dvlen_reclaim(type, dataspace, H5P_DEFAULT, &data_check);
492
+
CHECK(ret, FAIL, "H5Dvlen_reclaim");
491
493
492
494
ret = H5Aclose(att2);
493
495
CHECK(ret, FAIL, "HAclose");
494
496
495
497
ret = H5Gclose(root2);
496
498
CHECK(ret, FAIL, "H5Gclose");
497
499
498
500
ret = H5Tclose(type);
499
501
CHECK(ret, FAIL, "H5Tclose");
500
502
507
509
HDfree(string_att1);
508
510
HDfree(string_att2);
509
511
return;
510
512
}
511
513
512
514
513
515
static void test_misc2_read_attribute(const char *filename, const char *att_name)
514
516
{
515
517
hid_t file, root, att;
516
518
hid_t type;
519
+
hid_t space;
517
520
herr_t ret;
518
521
misc2_struct data_check;
519
522
520
523
type = misc2_create_type();
521
524
522
525
file = H5Fopen(filename, H5F_ACC_RDONLY, H5P_DEFAULT);
523
526
CHECK(file, FAIL, "H5Fopen");
524
527
525
528
root = H5Gopen2(file, "/", H5P_DEFAULT);
526
529
CHECK(root, FAIL, "H5Gopen2");
527
530
528
531
att = H5Aopen(root, att_name, H5P_DEFAULT);
529
532
CHECK(att, FAIL, "H5Aopen");
530
533
534
+
space = H5Aget_space(att);
535
+
CHECK(space, FAIL, "H5Aget_space");
536
+
531
537
ret = H5Aread(att, type, &data_check);
532
538
CHECK(ret, FAIL, "H5Aread");
533
539
534
-
HDfree(data_check.string);
540
+
ret = H5Dvlen_reclaim(type, space, H5P_DEFAULT, &data_check);
541
+
CHECK(ret, FAIL, "H5Dvlen_reclaim");
542
+
543
+
ret = H5Sclose(space);
544
+
CHECK(ret, FAIL, "H5Sclose");
535
545
536
546
ret = H5Aclose(att);
537
547
CHECK(ret, FAIL, "H5Aclose");
538
548
539
549
ret = H5Tclose(type);
540
550
CHECK(ret, FAIL, "H5Tclose");
541
551
542
552
ret = H5Gclose(root);
543
553
CHECK(ret, FAIL, "H5Gclose");
544
554