[svn-r26575] Removed compiler warning for hl/tools and hl/src.
HDF5-250 and HDF5-241 tested: h5committest
This commit is contained in:
@@ -1430,10 +1430,12 @@ herr_t H5DSset_label(hid_t did, unsigned int idx, const char *label)
|
||||
hid_t aid = -1; /* attribute ID */
|
||||
int rank; /* rank of dataset */
|
||||
hsize_t dims[1]; /* dimensions of dataset */
|
||||
const char **buf = NULL; /* buffer to store in the attribute */
|
||||
H5I_type_t it; /* ID type */
|
||||
unsigned int i;
|
||||
|
||||
union { /* union is needed to eliminate compiler warnings about */
|
||||
char ** buf; /* discarding the 'const' qualifier in the free */
|
||||
char const ** const_buf; /* buf calls */
|
||||
} u;
|
||||
/*-------------------------------------------------------------------------
|
||||
* parameter checking
|
||||
*-------------------------------------------------------------------------
|
||||
@@ -1496,19 +1498,19 @@ herr_t H5DSset_label(hid_t did, unsigned int idx, const char *label)
|
||||
goto out;
|
||||
|
||||
/* allocate and initialize */
|
||||
buf = (const char **) HDmalloc((size_t) rank * sizeof(char *));
|
||||
u.const_buf = (char const **) HDmalloc((size_t) rank * sizeof(char *));
|
||||
|
||||
if (buf == NULL)
|
||||
if (u.const_buf == NULL)
|
||||
goto out;
|
||||
|
||||
for (i = 0; i < (unsigned int) rank; i++)
|
||||
buf[i] = NULL;
|
||||
u.const_buf[i] = NULL;
|
||||
|
||||
/* store the label information in the required index */
|
||||
buf[idx] = label;
|
||||
u.const_buf[idx] = label;
|
||||
|
||||
/* write the attribute with the label */
|
||||
if (H5Awrite(aid, tid, buf) < 0)
|
||||
if (H5Awrite(aid, tid, u.const_buf) < 0)
|
||||
goto out;
|
||||
|
||||
/* close */
|
||||
@@ -1518,10 +1520,10 @@ herr_t H5DSset_label(hid_t did, unsigned int idx, const char *label)
|
||||
goto out;
|
||||
if (H5Aclose(aid) < 0)
|
||||
goto out;
|
||||
if (buf)
|
||||
if (u.const_buf)
|
||||
{
|
||||
HDfree(buf);
|
||||
buf = NULL;
|
||||
HDfree(u.const_buf);
|
||||
u.const_buf = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1532,6 +1534,7 @@ herr_t H5DSset_label(hid_t did, unsigned int idx, const char *label)
|
||||
|
||||
else
|
||||
{
|
||||
|
||||
if ((aid = H5Aopen(did, DIMENSION_LABELS, H5P_DEFAULT)) < 0)
|
||||
goto out;
|
||||
|
||||
@@ -1539,34 +1542,34 @@ herr_t H5DSset_label(hid_t did, unsigned int idx, const char *label)
|
||||
goto out;
|
||||
|
||||
/* allocate and initialize */
|
||||
buf = (const char **) HDmalloc((size_t) rank * sizeof(char *));
|
||||
|
||||
if (buf == NULL)
|
||||
u.buf = (char **) HDmalloc((size_t) rank * sizeof(char *));
|
||||
|
||||
if (u.buf == NULL)
|
||||
goto out;
|
||||
|
||||
/* read */
|
||||
if (H5Aread(aid, tid, (void *) buf) < 0)
|
||||
if (H5Aread(aid, tid, (void *)u.buf) < 0)
|
||||
goto out;
|
||||
|
||||
/* free the ptr that will be replaced by label */
|
||||
if (buf[idx])
|
||||
HDfree(buf[idx]);
|
||||
if (u.buf[idx])
|
||||
HDfree(u.buf[idx]);
|
||||
|
||||
/* store the label information in the required index */
|
||||
buf[idx] = label;
|
||||
u.const_buf[idx] = label;
|
||||
|
||||
/* write the attribute with the new references */
|
||||
if (H5Awrite(aid, tid, buf) < 0)
|
||||
if (H5Awrite(aid, tid, u.buf) < 0)
|
||||
goto out;
|
||||
|
||||
/* label was brought in, so don't free */
|
||||
buf[idx] = NULL;
|
||||
u.buf[idx] = NULL;
|
||||
|
||||
/* free all the ptr's from the H5Aread() */
|
||||
for (i = 0; i < (unsigned int) rank; i++)
|
||||
{
|
||||
if (buf[i])
|
||||
HDfree(buf[i]);
|
||||
if (u.buf[i])
|
||||
HDfree(u.buf[i]);
|
||||
}
|
||||
|
||||
/* close */
|
||||
@@ -1574,28 +1577,29 @@ herr_t H5DSset_label(hid_t did, unsigned int idx, const char *label)
|
||||
goto out;
|
||||
if (H5Aclose(aid) < 0)
|
||||
goto out;
|
||||
if (buf)
|
||||
if (u.buf)
|
||||
{
|
||||
HDfree(buf);
|
||||
buf = NULL;
|
||||
HDfree(u.buf);
|
||||
u.buf = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return SUCCEED;
|
||||
|
||||
/* error zone */
|
||||
|
||||
out:
|
||||
if (buf)
|
||||
if (u.buf)
|
||||
{
|
||||
if (buf[idx]) /* check if we errored during H5Awrite */
|
||||
buf[idx] = NULL; /* don't free label */
|
||||
if (u.buf[idx]) /* check if we errored during H5Awrite */
|
||||
u.buf[idx] = NULL; /* don't free label */
|
||||
/* free all the ptr's from the H5Aread() */
|
||||
for (i = 0; i < (unsigned int) rank; i++)
|
||||
{
|
||||
if (buf[i])
|
||||
HDfree(buf[i]);
|
||||
if (u.buf[i])
|
||||
HDfree(u.buf[i]);
|
||||
}
|
||||
HDfree(buf);
|
||||
HDfree(u.buf);
|
||||
}
|
||||
H5E_BEGIN_TRY
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user