diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 1999-09-29 00:30:21 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 1999-09-29 00:30:21 (GMT) |
commit | 4d5186a245fa6f86efbbb77a2b640b1369dd58f5 (patch) | |
tree | 38398a047a439c83c063a5c813e653f8eefb966b /src/H5D.c | |
parent | dd266011176b9003e38aa9ff55a6557a6e2e53c4 (diff) | |
download | hdf5-4d5186a245fa6f86efbbb77a2b640b1369dd58f5.zip hdf5-4d5186a245fa6f86efbbb77a2b640b1369dd58f5.tar.gz hdf5-4d5186a245fa6f86efbbb77a2b640b1369dd58f5.tar.bz2 |
[svn-r1689] Mainly adding support for "native" variable-length strings (C only currently),
but I fixed lots of misc. compiler warnings in other code and also tracked down
the memory overwrite bug that was causing the development branch to core dump
on most machines.
Diffstat (limited to 'src/H5D.c')
-rw-r--r-- | src/H5D.c | 21 |
1 files changed, 15 insertions, 6 deletions
@@ -1890,6 +1890,9 @@ H5D_write(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space, HDmemset(&mem_iter,0,sizeof(H5S_sel_iter_t)); HDmemset(&bkg_iter,0,sizeof(H5S_sel_iter_t)); HDmemset(&file_iter,0,sizeof(H5S_sel_iter_t)); +#ifdef QAK + printf("%s: check 0.3, buf=%p\n", FUNC,buf); +#endif /* QAK */ /* Get the dataset transfer property list */ if (H5P_DEFAULT == dxpl_id) { @@ -2129,7 +2132,7 @@ H5D_write(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space, printf("\n"); } } - printf("%s: check 6.0\n",FUNC); + printf("%s: check 6.0, tconv_buf=%p, *tconv_buf=%p\n",FUNC,tconv_buf,*(char **)tconv_buf); #endif if (H5T_BKG_YES==need_bkg) { @@ -2807,11 +2810,11 @@ H5D_vlen_get_buf_size(void UNUSED *elem, hid_t type_id, hsize_t UNUSED ndim, hss HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't resize tbuf"); /* Select point to read in */ - if (H5Sselect_elements(vlen_bufsize->space_id,H5S_SELECT_SET,1,(const hssize_t **)point)<0) + if (H5Sselect_elements(vlen_bufsize->fspace_id,H5S_SELECT_SET,1,(const hssize_t **)point)<0) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTCREATE, FAIL, "can't select point"); /* Read in the point (with the custom VL memory allocator) */ - if(H5Dread(vlen_bufsize->dataset_id,type_id,H5S_ALL,vlen_bufsize->space_id,vlen_bufsize->xfer_pid,tbuf)<0) + if(H5Dread(vlen_bufsize->dataset_id,type_id,vlen_bufsize->mspace_id,vlen_bufsize->fspace_id,vlen_bufsize->xfer_pid,tbuf)<0) HGOTO_ERROR(H5E_DATASET, H5E_READERROR, FAIL, "can't read point"); /* Set the correct return value, if we get this far */ @@ -2871,8 +2874,12 @@ H5Dvlen_get_buf_size(hid_t dataset_id, hid_t type_id, hid_t space_id, vlen_bufsize.dataset_id=dataset_id; /* Get a copy of the dataspace ID */ - if((vlen_bufsize.space_id=H5Dget_space(dataset_id))<0) + if((vlen_bufsize.fspace_id=H5Dget_space(dataset_id))<0) HGOTO_ERROR(H5E_DATASPACE, H5E_CANTCOPY, FAIL, "can't copy dataspace"); + + /* Create a scalar for the memory dataspace */ + if((vlen_bufsize.mspace_id=H5Screate(H5S_SCALAR))<0) + HGOTO_ERROR(H5E_DATASPACE, H5E_CANTCOPY, FAIL, "can't create dataspace"); /* Grab the temporary buffers required */ if((vlen_bufsize.fl_tbuf_id=H5TB_get_buf(1,0,NULL))<0) @@ -2899,8 +2906,10 @@ H5Dvlen_get_buf_size(hid_t dataset_id, hid_t type_id, hid_t space_id, *size=vlen_bufsize.size; done: - if(vlen_bufsize.space_id>0) - H5Sclose(vlen_bufsize.space_id); + if(vlen_bufsize.fspace_id>0) + H5Sclose(vlen_bufsize.fspace_id); + if(vlen_bufsize.mspace_id>0) + H5Sclose(vlen_bufsize.mspace_id); if(vlen_bufsize.fl_tbuf_id>0) H5TB_release_buf(vlen_bufsize.fl_tbuf_id); if(vlen_bufsize.vl_tbuf_id>0) |