Well roughly speaking, buf is an array of `char*`.  Each element of this array (the `char*`s) HDF5 malloc()s and then later cleans up with the H5Dvlen_reclaim() call below.  If there is an error allocating these `char*`s that HDF5 runs into, there is no way that we can safely deallocate the array that contains them.  This is basically a "die right now, please" problem.