summaryrefslogtreecommitdiffstats
path: root/src/H5Gnode.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Gnode.c')
-rw-r--r--src/H5Gnode.c313
1 files changed, 234 insertions, 79 deletions
diff --git a/src/H5Gnode.c b/src/H5Gnode.c
index 3ce046e..9e66188 100644
--- a/src/H5Gnode.c
+++ b/src/H5Gnode.c
@@ -13,7 +13,10 @@
* table entries. A B-tree usually points to the
* symbol table nodes for any given symbol table.
*
- * Modifications:
+ * Modifications:
+ *
+ * Robb Matzke, 5 Aug 1997
+ * Added calls to H5E.
*
*-------------------------------------------------------------------------
*/
@@ -24,6 +27,7 @@
#include "hdf5.h"
/* Packages needed by this file... */
+#include "H5private.h" /*library */
#include "H5ACprivate.h" /*cache */
#include "H5Bprivate.h" /*B-link trees */
#include "H5Gprivate.h" /*me */
@@ -31,9 +35,12 @@
#include "H5MFprivate.h" /*file memory management */
#include "H5MMprivate.h" /*core memory management */
+#define PABLO_MASK H5G_node_mask
+
+
/* PRIVATE PROTOTYPES */
-static void H5G_node_decode_key (hdf5_file_t *f, uint8 *raw, void *_key);
-static void H5G_node_encode_key (hdf5_file_t *f, uint8 *raw, void *_key);
+static herr_t H5G_node_decode_key (hdf5_file_t *f, uint8 *raw, void *_key);
+static herr_t H5G_node_encode_key (hdf5_file_t *f, uint8 *raw, void *_key);
static size_t H5G_node_size (hdf5_file_t *f);
static haddr_t H5G_node_new (hdf5_file_t *f, void *_lt_key, void *_udata,
void *_rt_key);
@@ -73,6 +80,9 @@ const H5B_class_t H5B_SNODE[1] = {{
H5G_node_encode_key, /*encode */
}};
+/* Has the interface been initialized? */
+static intn interface_initialize_g = FALSE;
+
/*-------------------------------------------------------------------------
* Function: H5G_node_sizeof_rkey
@@ -85,7 +95,7 @@ const H5B_class_t H5B_SNODE[1] = {{
* Failure: never fails
*
* Programmer: Robb Matzke
- * robb@maya.nuance.com
+ * matzke@llnl.gov
* Jul 14 1997
*
* Modifications:
@@ -104,22 +114,32 @@ H5G_node_sizeof_rkey (hdf5_file_t *f)
*
* Purpose: Decodes a raw key into a native key.
*
- * Return: void
+ * Return: Success: SUCCEED
+ *
+ * Failure: FAIL
*
* Programmer: Robb Matzke
- * robb@maya.nuance.com
+ * matzke@llnl.gov
* Jul 8 1997
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
-static void
+static herr_t
H5G_node_decode_key (hdf5_file_t *f, uint8 *raw, void *_key)
{
H5G_node_key_t *key = (H5G_node_key_t *)_key;
+ FUNC_ENTER (H5G_node_decode_key, NULL, FAIL);
+
+ assert (f);
+ assert (raw);
+ assert (key);
+
H5F_decode_offset (f, raw, key->offset);
+
+ FUNC_LEAVE (SUCCEED);
}
@@ -128,22 +148,32 @@ H5G_node_decode_key (hdf5_file_t *f, uint8 *raw, void *_key)
*
* Purpose: Encodes a native key into a raw key.
*
- * Return: void
+ * Return: Success: SUCCEED
+ *
+ * Failure: FAIL
*
* Programmer: Robb Matzke
- * robb@maya.nuance.com
+ * matzke@llnl.gov
* Jul 8 1997
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
-static void
+static herr_t
H5G_node_encode_key (hdf5_file_t *f, uint8 *raw, void *_key)
{
H5G_node_key_t *key = (H5G_node_key_t *)_key;
+ FUNC_ENTER (H5G_node_encode_key, NULL, FAIL);
+
+ assert (f);
+ assert (raw);
+ assert (key);
+
H5F_encode_offset (f, raw, key->offset);
+
+ FUNC_LEAVE (SUCCEED);
}
@@ -157,7 +187,7 @@ H5G_node_encode_key (hdf5_file_t *f, uint8 *raw, void *_key)
* Failure: Never fails.
*
* Programmer: Robb Matzke
- * robb@maya.nuance.com
+ * matzke@llnl.gov
* Jun 23 1997
*
* Modifications:
@@ -182,10 +212,10 @@ H5G_node_size (hdf5_file_t *f)
*
* Return: Success: Address of symbol table node.
*
- * Failure: 0
+ * Failure: FAIL
*
* Programmer: Robb Matzke
- * robb@maya.nuance.com
+ * matzke@llnl.gov
* Jun 23 1997
*
* Modifications:
@@ -197,23 +227,44 @@ H5G_node_new (hdf5_file_t *f, void *_lt_key, void *_udata, void *_rt_key)
{
H5G_node_key_t *lt_key = (H5G_node_key_t*)_lt_key;
H5G_node_key_t *rt_key = (H5G_node_key_t*)_rt_key;
- H5G_node_t *sym = H5MM_xcalloc (1, sizeof(H5G_node_t));
- size_t size = H5G_node_size (f);
- haddr_t addr = H5MF_alloc (f, size);
+ H5G_node_t *sym = NULL;
+ size_t size = 0;
+ haddr_t addr;
+
+ FUNC_ENTER (H5G_node_new, NULL, FAIL);
+
+ /*
+ * Check arguments.
+ */
+ assert (f);
+ assert (lt_key);
+ assert (rt_key);
+
+ sym = H5MM_xcalloc (1, sizeof(H5G_node_t));
+ size = H5G_node_size (f);
+ if ((addr = H5MF_alloc (f, size))<0) {
+ H5MM_xfree (sym);
+ HRETURN_ERROR (H5E_SYM, H5E_CANTINIT, FAIL);
+ }
sym->dirty = 1;
sym->entry = H5MM_xcalloc (2 * H5G_NODE_K, sizeof(H5G_entry_t));
- H5AC_set (f, H5AC_SNODE, addr, sym);
+ if (H5AC_set (f, H5AC_SNODE, addr, sym)<0) {
+ H5MM_xfree (sym->entry);
+ H5MM_xfree (sym);
+ HRETURN_ERROR (H5E_SYM, H5E_CANTINIT, FAIL);
+ }
/*
* The left and right symbols in an empty tree are both the
- * empty string stored at offset zero by the symtab.c functions. This
+ * empty string stored at offset zero by the H5G functions. This
* allows the comparison functions to work correctly without knowing
* that there are no symbols.
*/
if (lt_key) lt_key->offset = 0;
if (rt_key) rt_key->offset = 0;
- return addr;
+
+ FUNC_LEAVE (addr);
}
@@ -222,12 +273,12 @@ H5G_node_new (hdf5_file_t *f, void *_lt_key, void *_udata, void *_rt_key)
*
* Purpose: Flush a symbol table node to disk.
*
- * Return: Success: 0
+ * Return: Success: SUCCEED
*
- * Failure: -1
+ * Failure: FAIL
*
* Programmer: Robb Matzke
- * robb@maya.nuance.com
+ * matzke@llnl.gov
* Jun 23 1997
*
* Modifications:
@@ -239,6 +290,16 @@ H5G_node_flush (hdf5_file_t *f, hbool_t destroy, haddr_t addr, H5G_node_t *sym)
{
uint8 *buf=NULL, *p=NULL;
size_t size;
+ herr_t status;
+
+ FUNC_ENTER (H5G_node_flush, NULL, FAIL);
+
+ /*
+ * Check arguments.
+ */
+ assert (f);
+ assert (addr>=0);
+ assert (sym);
if (sym->dirty) {
size = H5G_node_size (f);
@@ -261,8 +322,9 @@ H5G_node_flush (hdf5_file_t *f, hbool_t destroy, haddr_t addr, H5G_node_t *sym)
H5G_encode_vec (f, &p, sym->entry, sym->nsyms);
- H5F_block_write (f, addr, p-buf, buf);
+ status = H5F_block_write (f, addr, p-buf, buf);
buf = H5MM_xfree (buf);
+ if (status<0) HRETURN_ERROR (H5E_SYM, H5E_WRITEERROR, FAIL);
}
if (destroy) {
@@ -270,7 +332,7 @@ H5G_node_flush (hdf5_file_t *f, hbool_t destroy, haddr_t addr, H5G_node_t *sym)
H5MM_xfree (sym);
}
- return 0;
+ FUNC_LEAVE (SUCCEED);
}
@@ -284,7 +346,7 @@ H5G_node_flush (hdf5_file_t *f, hbool_t destroy, haddr_t addr, H5G_node_t *sym)
* Failure: NULL
*
* Programmer: Robb Matzke
- * robb@maya.nuance.com
+ * matzke@llnl.gov
* Jun 23 1997
*
* Modifications:
@@ -294,14 +356,32 @@ H5G_node_flush (hdf5_file_t *f, hbool_t destroy, haddr_t addr, H5G_node_t *sym)
static H5G_node_t *
H5G_node_load (hdf5_file_t *f, haddr_t addr, const void *_udata)
{
- H5G_node_t *sym = H5MM_xcalloc (1, sizeof(H5G_node_t));
- size_t size = H5G_node_size (f);
- uint8 *buf = H5MM_xmalloc (size);
- uint8 *p = buf;
-
+ H5G_node_t *sym = NULL;
+ size_t size = 0;
+ uint8 *buf = NULL, *p = NULL;
+ FUNC_ENTER (H5G_node_load, NULL, NULL);
+
+ /*
+ * Check arguments.
+ */
+ assert (f);
+ assert (addr>=0);
+ assert (NULL==_udata);
+
+ /*
+ * Initialize variables.
+ */
+ size = H5G_node_size (f);
+ buf = p = H5MM_xmalloc (size);
+ sym = H5MM_xcalloc (1, sizeof(H5G_node_t));
sym->entry = H5MM_xcalloc (2*H5G_NODE_K, sizeof(H5G_entry_t));
- H5F_block_read (f, addr, size, buf);
+
+ if (H5F_block_read (f, addr, size, buf)<0) {
+ H5MM_xfree (sym->entry);
+ H5MM_xfree (sym);
+ HRETURN_ERROR (H5E_SYM, H5E_READERROR, NULL);
+ }
/* magic */
if (HDmemcmp (p, H5G_NODE_MAGIC, H5G_NODE_SIZEOF_MAGIC)) goto error;
@@ -317,15 +397,15 @@ H5G_node_load (hdf5_file_t *f, haddr_t addr, const void *_udata)
UINT16DECODE (p, sym->nsyms);
/* entries */
- H5G_decode_vec (f, &p, sym->entry, sym->nsyms);
+ if (H5G_decode_vec (f, &p, sym->entry, sym->nsyms)<0) goto error;
H5MM_xfree (buf);
- return sym;
+ FUNC_LEAVE (sym);
error:
H5MM_xfree (buf);
H5MM_xfree (sym);
- return NULL;
+ HRETURN_ERROR (H5E_SYM, H5E_CANTLOAD, NULL);
}
@@ -346,10 +426,10 @@ error:
* the LEFT key (exclusive) and the
* RIGHT key (inclusive).
*
- * Failure: Never fails
+ * Failure: FAIL (same as LT < RT)
*
* Programmer: Robb Matzke
- * robb@maya.nuance.com
+ * matzke@llnl.gov
* Jun 23 1997
*
* Modifications:
@@ -364,15 +444,21 @@ H5G_node_cmp (hdf5_file_t *f, void *_lt_key, void *_udata, void *_rt_key)
H5G_node_key_t *rt_key = (H5G_node_key_t *)_rt_key;
const char *s;
+ FUNC_ENTER (H5G_node_cmp, NULL, FAIL);
+
/* left side */
- s = H5H_peek (f, udata->heap, lt_key->offset);
- if (HDstrcmp (udata->name, s)<=0) return -1;
+ if (NULL==(s=H5H_peek (f, udata->heap, lt_key->offset))) {
+ HRETURN_ERROR (H5E_SYM, H5E_NOTFOUND, FAIL);
+ }
+ if (HDstrcmp (udata->name, s)<=0) HRETURN (-1);
/* right side */
- s = H5H_peek (f, udata->heap, rt_key->offset);
- if (HDstrcmp (udata->name, s)>0) return 1;
+ if (NULL==(s=H5H_peek (f, udata->heap, rt_key->offset))) {
+ HRETURN_ERROR (H5E_SYM, H5E_NOTFOUND, FAIL);
+ }
+ if (HDstrcmp (udata->name, s)>0) HRETURN(-1);
- return 0;
+ FUNC_LEAVE (0);
}
@@ -391,13 +477,13 @@ H5G_node_cmp (hdf5_file_t *f, void *_lt_key, void *_udata, void *_rt_key)
* entry field. Otherwise the entry is copied from the
* UDATA entry field to the symbol table.
*
- * Return: Success: 0 if found and data returned through the
+ * Return: Success: SUCCEED if found and data returned through the
* UDATA pointer.
*
- * Failure: -1 if not found.
+ * Failure: FAIL if not found.
*
* Programmer: Robb Matzke
- * robb@maya.nuance.com
+ * matzke@llnl.gov
* Jun 23 1997
*
* Modifications:
@@ -413,8 +499,18 @@ H5G_node_found (hdf5_file_t *f, haddr_t addr, void *_lt_key, void *_udata,
intn lt=0, idx=0, rt, cmp=1;
const char *s;
- sn = H5AC_find (f, H5AC_SNODE, addr, NULL);
- if (!sn) return -1;
+ FUNC_ENTER (H5G_node_found, NULL, FAIL);
+
+ /*
+ * Check arguments.
+ */
+ assert (f);
+ assert (addr>=0);
+ assert (udata);
+
+ if (NULL==(sn=H5AC_find (f, H5AC_SNODE, addr, NULL))) {
+ HRETURN_ERROR (H5E_SYM, H5E_CANTLOAD, FAIL);
+ }
rt = sn->nsyms;
/*
@@ -422,8 +518,12 @@ H5G_node_found (hdf5_file_t *f, haddr_t addr, void *_lt_key, void *_udata,
*/
while (lt<rt && cmp) {
idx = (lt + rt) / 2;
- sn = H5AC_find (f, H5AC_SNODE, addr, NULL);
- s = H5H_peek (f, udata->heap, sn->entry[idx].name_off);
+ if (NULL==(sn=H5AC_find (f, H5AC_SNODE, addr, NULL))) {
+ HRETURN_ERROR (H5E_SYM, H5E_CANTLOAD, FAIL);
+ }
+ if (NULL==(s=H5H_peek (f, udata->heap, sn->entry[idx].name_off))) {
+ HRETURN_ERROR (H5E_SYM, H5E_NOTFOUND, FAIL);
+ }
cmp = HDstrcmp (udata->name, s);
if (cmp<0) {
@@ -432,7 +532,7 @@ H5G_node_found (hdf5_file_t *f, haddr_t addr, void *_lt_key, void *_udata,
lt = idx+1;
}
}
- if (cmp) return -1;
+ if (cmp) HRETURN_ERROR (H5E_SYM, H5E_NOTFOUND, FAIL);
switch (udata->operation) {
case H5G_OPER_FIND:
@@ -451,7 +551,7 @@ H5G_node_found (hdf5_file_t *f, haddr_t addr, void *_lt_key, void *_udata,
break;
}
- return 0;
+ FUNC_LEAVE (SUCCEED);
}
@@ -484,7 +584,7 @@ H5G_node_found (hdf5_file_t *f, haddr_t addr, void *_lt_key, void *_udata,
* Failure: -1
*
* Programmer: Robb Matzke
- * robb@maya.nuance.com
+ * matzke@llnl.gov
* Jun 24 1997
*
* Modifications:
@@ -508,6 +608,18 @@ H5G_node_insert (hdf5_file_t *f, haddr_t addr, intn *anchor,
intn idx=-1, nsyms, cmp=1;
intn lt=0, rt; /*binary search cntrs */
+ FUNC_ENTER (H5G_node_insert, NULL, FAIL);
+
+ /*
+ * Check arguments.
+ */
+ assert (f);
+ assert (addr>=0);
+ assert (anchor);
+ assert (md_key);
+ assert (rt_key);
+ assert (udata);
+
/*
* Symbol tables are always split so the new symbol table node is
* to the right of the old one.
@@ -520,8 +632,9 @@ H5G_node_insert (hdf5_file_t *f, haddr_t addr, intn *anchor,
* Load the symbol node and buffer the entries so we don't have to
* worry about the cached value disappearing.
*/
- sn = H5AC_find (f, H5AC_SNODE, addr, NULL);
- if (!sn) return -1;
+ if (NULL==(sn=H5AC_find (f, H5AC_SNODE, addr, NULL))) {
+ HRETURN_ERROR (H5E_SYM, H5E_CANTLOAD, FAIL);
+ }
HDmemcpy (ent, sn->entry, sn->nsyms * sizeof(H5G_entry_t));
rt = nsyms = sn->nsyms;
sn = NULL;
@@ -531,8 +644,12 @@ H5G_node_insert (hdf5_file_t *f, haddr_t addr, intn *anchor,
*/
while (lt<rt) {
idx = (lt + rt) / 2;
- s = H5H_peek (f, udata->heap, ent[idx].name_off);
- if (0==(cmp=HDstrcmp (udata->name, s))) return -1; /*already present*/
+ if (NULL==(s=H5H_peek (f, udata->heap, ent[idx].name_off))) {
+ HRETURN_ERROR (H5E_SYM, H5E_NOTFOUND, FAIL);
+ }
+ if (0==(cmp=HDstrcmp (udata->name, s))) {
+ HRETURN_ERROR (H5E_SYM, H5E_CANTINSERT, FAIL); /*already present*/
+ }
if (cmp<0) {
rt = idx;
} else {
@@ -547,6 +664,7 @@ H5G_node_insert (hdf5_file_t *f, haddr_t addr, intn *anchor,
* with the new heap address.
*/
offset = H5H_insert (f, udata->heap, strlen(udata->name)+1, udata->name);
+ if (offset<0) HRETURN_ERROR (H5E_SYM, H5E_CANTINSERT, FAIL);
if (nsyms>=2*H5G_NODE_K) {
/*
@@ -556,7 +674,9 @@ H5G_node_insert (hdf5_file_t *f, haddr_t addr, intn *anchor,
*/
/* The left node */
- sn = H5AC_find (f, H5AC_SNODE, addr, NULL);
+ if (NULL==(sn=H5AC_find (f, H5AC_SNODE, addr, NULL))) {
+ HRETURN_ERROR (H5E_SYM, H5E_CANTLOAD, FAIL);
+ }
HDmemset (sn->entry+H5G_NODE_K, 0, H5G_NODE_K*sizeof(H5G_entry_t));
sn->nsyms = H5G_NODE_K;
sn->dirty += 1;
@@ -573,8 +693,12 @@ H5G_node_insert (hdf5_file_t *f, haddr_t addr, intn *anchor,
md_key->offset = sn->entry[sn->nsyms-1].name_off;
/* The right node */
- new_node = H5G_node_new (f, NULL, NULL, NULL);
- sn = H5AC_find (f, H5AC_SNODE, new_node, NULL);
+ if ((new_node = H5G_node_new (f, NULL, NULL, NULL))<0) {
+ HRETURN_ERROR (H5E_SYM, H5E_CANTINIT, FAIL);
+ }
+ if (NULL==(sn=H5AC_find (f, H5AC_SNODE, new_node, NULL))) {
+ HRETURN_ERROR (H5E_SYM, H5E_CANTLOAD, FAIL);
+ }
HDmemcpy (sn->entry, ent+H5G_NODE_K,
H5G_NODE_K*sizeof(H5G_entry_t));
sn->nsyms = H5G_NODE_K;
@@ -598,7 +722,9 @@ H5G_node_insert (hdf5_file_t *f, haddr_t addr, intn *anchor,
/*
* Add the new symbol to the node.
*/
- sn = H5AC_find (f, H5AC_SNODE, addr, NULL);
+ if (NULL==(sn=H5AC_find (f, H5AC_SNODE, addr, NULL))) {
+ HRETURN_ERROR (H5E_SYM, H5E_CANTLOAD, FAIL);
+ }
sn->dirty += 1;
HDmemmove (sn->entry+idx+1, sn->entry+idx,
(sn->nsyms-idx) * sizeof (H5G_entry_t));
@@ -612,7 +738,7 @@ H5G_node_insert (hdf5_file_t *f, haddr_t addr, intn *anchor,
}
}
- return new_node;
+ FUNC_LEAVE (new_node);
}
@@ -622,12 +748,12 @@ H5G_node_insert (hdf5_file_t *f, haddr_t addr, intn *anchor,
* Purpose: This function gets called during a directory list operation.
* It should fill in data in the UDATA struct.
*
- * Return: Success: 0
+ * Return: Success: SUCCEED
*
- * Failure: -1
+ * Failure: FAIL
*
* Programmer: Robb Matzke
- * robb@maya.nuance.com
+ * matzke@llnl.gov
* Jun 24 1997
*
* Modifications:
@@ -638,12 +764,23 @@ static herr_t
H5G_node_list (hdf5_file_t *f, haddr_t addr, void *_udata)
{
H5G_node_list_t *udata = (H5G_node_list_t *)_udata;
- H5G_node_t *sn = H5AC_find (f, H5AC_SNODE, addr, NULL);
+ H5G_node_t *sn = NULL;
off_t *offsets = NULL;
intn nsyms, i;
const char *s;
- if (!sn) return -1;
+ FUNC_ENTER (H5G_node_list, NULL, FAIL);
+
+ /*
+ * Check arguments.
+ */
+ assert (f);
+ assert (addr>=0);
+ assert (udata);
+
+ if (NULL==(sn=H5AC_find (f, H5AC_SNODE, addr, NULL))) {
+ HRETURN_ERROR (H5E_SYM, H5E_CANTLOAD, FAIL);
+ }
nsyms = sn->nsyms;
/*
@@ -653,7 +790,7 @@ H5G_node_list (hdf5_file_t *f, haddr_t addr, void *_udata)
*/
if (udata->nsyms >= udata->maxentries) {
udata->nsyms += nsyms;
- return 0;
+ HRETURN (SUCCEED);
}
/*
@@ -677,11 +814,14 @@ H5G_node_list (hdf5_file_t *f, haddr_t addr, void *_udata)
if (udata->name && udata->entry) {
for (i=0; i<nsyms && udata->nsyms+i<udata->maxentries; i++) {
s = H5H_peek (f, udata->heap, udata->entry[udata->nsyms+i].name_off);
+ if (!s) HRETURN_ERROR (H5E_SYM, H5E_NOTFOUND, FAIL);
udata->name[udata->nsyms+i] = H5MM_xstrdup (s);
}
} else if (udata->name) {
for (i=0; i<nsyms && udata->nsyms+i<udata->maxentries; i++) {
- s = H5H_peek (f, udata->heap, offsets[i]);
+ if (NULL==(s=H5H_peek (f, udata->heap, offsets[i]))) {
+ HRETURN_ERROR (H5E_SYM, H5E_NOTFOUND, FAIL);
+ }
udata->name[udata->nsyms+i] = H5MM_xstrdup (s);
}
offsets = H5MM_xfree (offsets);
@@ -691,7 +831,7 @@ H5G_node_list (hdf5_file_t *f, haddr_t addr, void *_udata)
* Update the number of symbols.
*/
udata->nsyms += nsyms;
- return 0;
+ FUNC_LEAVE (SUCCEED);
}
@@ -701,12 +841,12 @@ H5G_node_list (hdf5_file_t *f, haddr_t addr, void *_udata)
* Purpose: Prints debugging information about a symbol table node
* or a B-tree node for a symbol table B-tree.
*
- * Return: Success: 0
+ * Return: Success: SUCCEED
*
- * Failure: -1
+ * Failure: FAIL
*
* Programmer: Robb Matzke
- * robb@maya.nuance.com
+ * matzke@llnl.gov
* Aug 4 1997
*
* Modifications:
@@ -719,18 +859,32 @@ H5G_node_debug (hdf5_file_t *f, haddr_t addr, FILE *stream, intn indent,
{
int i, j;
char buf[64];
- H5G_node_t *sn = H5AC_find (f, H5AC_SNODE, addr, NULL);
+ H5G_node_t *sn = NULL;
+ herr_t status;
+
+ FUNC_ENTER (H5G_node_debug, NULL, FAIL);
+
+ /*
+ * Check arguments.
+ */
+ assert (f);
+ assert (addr>=0);
+ assert (stream);
+ assert (indent>=0);
+ assert (fwidth>=0);
/*
* If we couldn't load the symbol table node, then try loading the
* B-tree node.
*/
- if (!sn) {
- return H5B_debug (f, addr, stream, indent, fwidth, H5B_SNODE);
+ if (NULL==(sn=H5AC_find(f, H5AC_SNODE, addr, NULL))) {
+ H5ECLEAR; /*discard that error*/
+ status = H5B_debug (f, addr, stream, indent, fwidth, H5B_SNODE);
+ if (status<0) HRETURN_ERROR (H5E_SYM, H5E_CANTLOAD, FAIL);
+ HRETURN (SUCCEED);
}
- if (!sn) return -1;
fprintf (stream, "%*sSymbol Table Node...\n", indent, "");
fprintf (stream, "%*s%-*s %d\n", indent, "", fwidth,
"Dirty:",
@@ -773,14 +927,14 @@ H5G_node_debug (hdf5_file_t *f, haddr_t addr, FILE *stream, intn indent,
}
break;
- case H5G_CACHED_SYMTAB:
+ case H5G_CACHED_STAB:
fprintf (stream, "Symbol Table\n");
fprintf (stream, "%*s%-*s %lu\n", indent, "", fwidth,
"B-tree address:",
- (unsigned long)(sn->entry[i].cache.symtab.btree));
+ (unsigned long)(sn->entry[i].cache.stab.btree));
fprintf (stream, "%*s%-*s %lu\n", indent, "", fwidth,
"Heap address:",
- (unsigned long)(sn->entry[i].cache.symtab.heap));
+ (unsigned long)(sn->entry[i].cache.stab.heap));
break;
default:
@@ -788,6 +942,7 @@ H5G_node_debug (hdf5_file_t *f, haddr_t addr, FILE *stream, intn indent,
break;
}
}
- return 0;
+
+ FUNC_LEAVE (SUCCEED);
}