diff options
author | Raymond Lu <songyulu@hdfgroup.org> | 2007-01-12 20:29:43 (GMT) |
---|---|---|
committer | Raymond Lu <songyulu@hdfgroup.org> | 2007-01-12 20:29:43 (GMT) |
commit | 77ce08c35687fc2ed4bf338318aa5fcff46750b0 (patch) | |
tree | e4c070170d6be036cb2184c067e39b87e9a60ecc /src/H5Fsuper.c | |
parent | 7072d7103d9ec03c4f1d1217cc45e966d867edbc (diff) | |
download | hdf5-77ce08c35687fc2ed4bf338318aa5fcff46750b0.zip hdf5-77ce08c35687fc2ed4bf338318aa5fcff46750b0.tar.gz hdf5-77ce08c35687fc2ed4bf338318aa5fcff46750b0.tar.bz2 |
[svn-r13139] Fixed the MULTI problem (Bug #731) that corrupted the data. The problem
came from the EOA for the whole MULTI file. It's taken out because it's
meaningless for MULTI file. Instead, each individual file has its EOA.
Diffstat (limited to 'src/H5Fsuper.c')
-rw-r--r-- | src/H5Fsuper.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/H5Fsuper.c b/src/H5Fsuper.c index d8c5d0e..62ada4e 100644 --- a/src/H5Fsuper.c +++ b/src/H5Fsuper.c @@ -120,7 +120,7 @@ H5F_read_superblock(H5F_t *f, hid_t dxpl_id, H5G_loc_t *root_loc, haddr_t addr, start_p = p = sbuf; buf_size=sizeof(sbuf); - if (H5FD_set_eoa(lf, shared->super_addr + fixed_size) < 0 || + if (H5FD_set_eoa(lf, H5FD_MEM_SUPER, shared->super_addr + fixed_size) < 0 || H5FD_read(lf, H5FD_MEM_SUPER, dxpl_id, shared->super_addr, fixed_size, p) < 0) HGOTO_ERROR(H5E_FILE, H5E_READERROR, FAIL, "unable to read superblock") } else { @@ -216,7 +216,7 @@ H5F_read_superblock(H5F_t *f, hid_t dxpl_id, H5G_loc_t *root_loc, haddr_t addr, /* The buffer (buf) is either passed in or the "local_buf" variable now */ if(!buf) { - if (H5FD_set_eoa(lf, shared->super_addr + fixed_size+variable_size) < 0 || + if (H5FD_set_eoa(lf, H5FD_MEM_SUPER, shared->super_addr + fixed_size+variable_size) < 0 || H5FD_read(lf, H5FD_MEM_SUPER, dxpl_id, shared->super_addr + fixed_size, variable_size, p) < 0) HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, FAIL, "unable to read superblock") @@ -292,7 +292,7 @@ H5F_read_superblock(H5F_t *f, hid_t dxpl_id, H5G_loc_t *root_loc, haddr_t addr, driver_p = p = dbuf; dbuf_size=sizeof(dbuf); - if (H5FD_set_eoa(lf, drv_addr + 16) < 0 || + if (H5FD_set_eoa(lf, H5FD_MEM_SUPER, drv_addr + 16) < 0 || H5FD_read(lf, H5FD_MEM_SUPER, dxpl_id, drv_addr, (size_t)16, p) < 0) HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, FAIL, "unable to read driver information block") } /* end if */ @@ -319,7 +319,7 @@ H5F_read_superblock(H5F_t *f, hid_t dxpl_id, H5G_loc_t *root_loc, haddr_t addr, assert((driver_size + 16) <= dbuf_size); if(!buf) { - if (H5FD_set_eoa(lf, drv_addr + 16 + driver_size) < 0 || + if (H5FD_set_eoa(lf, H5FD_MEM_SUPER, drv_addr + 16 + driver_size) < 0 || H5FD_read(lf, H5FD_MEM_SUPER, dxpl_id, drv_addr+16, driver_size, p) < 0) HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, FAIL, "unable to read file driver information") } /* end if */ @@ -365,7 +365,7 @@ H5F_read_superblock(H5F_t *f, hid_t dxpl_id, H5G_loc_t *root_loc, haddr_t addr, * Tell the file driver how much address space has already been * allocated so that it knows how to allocate additional memory. */ - if (H5FD_set_eoa(lf, stored_eoa) < 0) + if (H5FD_set_eoa(lf, H5FD_MEM_SUPER, stored_eoa) < 0) HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, FAIL, "unable to set end-of-address marker for file") /* Decode shared object header message information and store it in the @@ -595,7 +595,7 @@ H5F_write_superblock(H5F_t *f, hid_t dxpl_id) *p++ = f->shared->sohm_vers; *p++ = f->shared->sohm_nindexes; } - H5F_addr_encode(f, &p, H5FD_get_eoa(f->shared->lf)); + H5F_addr_encode(f, &p, H5FD_get_eoa(f->shared->lf, H5FD_MEM_SUPER)); H5F_addr_encode(f, &p, f->shared->driver_addr); if(H5G_obj_ent_encode(f, &p, H5G_oloc(f->shared->root_grp))<0) HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to encode root group information") |