diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2007-10-02 20:00:57 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2007-10-02 20:00:57 (GMT) |
commit | 708c0fa3e9d636b7a2e269941308ffeaf7430b73 (patch) | |
tree | d9143a379de53c73ad0ad3734341afa24cf54e1a /src | |
parent | c29e772cd30ac573ffaa6c59d0d6d6ebaee0ec2d (diff) | |
download | hdf5-708c0fa3e9d636b7a2e269941308ffeaf7430b73.zip hdf5-708c0fa3e9d636b7a2e269941308ffeaf7430b73.tar.gz hdf5-708c0fa3e9d636b7a2e269941308ffeaf7430b73.tar.bz2 |
[svn-r14176] Description:
Minor fixes to avoid memory leaks when 'realloc' fails.
Tested on:
Linux/32 2.6 (chicago)
Diffstat (limited to 'src')
-rw-r--r-- | src/H5Gtraverse.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/H5Gtraverse.c b/src/H5Gtraverse.c index d421f3b..ccd2a52 100644 --- a/src/H5Gtraverse.c +++ b/src/H5Gtraverse.c @@ -335,13 +335,15 @@ H5G_namei(const H5G_entry_t *loc_ent, const char *name, const char **rest/*out*/ H5G_ent_reset(grp_ent); /* Check for needing a larger buffer for the individual path name components */ - if(HDstrlen(name) + 1 > H5G_comp_alloc_g) { - H5G_comp_alloc_g = MAX3(1024, 2 * H5G_comp_alloc_g, HDstrlen(name) + 1); - H5G_comp_g = H5MM_realloc(H5G_comp_g, H5G_comp_alloc_g); - if(!H5G_comp_g) { - H5G_comp_alloc_g = 0; + if((HDstrlen(name) + 1) > H5G_comp_alloc_g) { + char *new_comp; /* New component buffer */ + size_t new_alloc; /* New component buffer size */ + + new_alloc = MAX3(1024, (2 * H5G_comp_alloc_g), (HDstrlen(name) + 1)); + if(NULL == (new_comp = H5MM_realloc(H5G_comp_g, new_alloc))) HGOTO_ERROR(H5E_SYM, H5E_NOSPACE, FAIL, "unable to allocate component buffer") - } /* end if */ + H5G_comp_g = new_comp; + H5G_comp_alloc_g = new_alloc; } /* end if */ /* traverse the name */ |