[svn-r9440] Purpose:

Bug fix

Description:
Fix typo in #ifdef for unsigned long long to double conversion.
Changed WIN32 check to H5_ULLONG_TO_FP_CAST_WORKS
This check-in (and the one before it) also includes a large code-refactoring
that is still in progress.

Solution:
the ifdef for the plus case was checking unsigned long instead of unsigned
long long.  Moved the check to the right location.

Platforms tested:
sol+eirene

Misc. update:
This commit is contained in:
Leon Arber 2004-10-19 19:21:52 -05:00
parent cc168abb1e
commit b6c9d2afa7

View File

@ -964,8 +964,11 @@ H5Z_xform_eval_full(H5Z_node *tree, const size_t array_size, const hid_t array_
}
else
{
H5Z_xform_eval_full(tree->lchild, array_size, array_type, &resl);
H5Z_xform_eval_full(tree->rchild, array_size, array_type, &resr);
if(H5Z_xform_eval_full(tree->lchild, array_size, array_type, &resl) < 0)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "error while performing data transform")
if(H5Z_xform_eval_full(tree->rchild, array_size, array_type, &resr) < 0)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "error while performing data transform")
res->type = H5Z_XFORM_SYMBOL;
/* For each type of operation:
@ -999,8 +1002,8 @@ H5Z_xform_eval_full(H5Z_node *tree, const size_t array_size, const hid_t array_
H5Z_XFORM_DO_OP1(resl, resr, long_long, +=, array_size)
else if(array_type == H5T_NATIVE_ULLONG)
{
#ifdef WIN32
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Cannot convert from unsigned int64 to double on win32")
#ifndef H5_ULLONG_TO_FP_CAST_WORKS
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Cannot convert from unsigned long long to double, this is required for data transform to function")
#else
H5Z_XFORM_DO_OP1(resl, resr, unsigned long_long, +=, array_size)
#endif
@ -1074,8 +1077,8 @@ H5Z_xform_eval_full(H5Z_node *tree, const size_t array_size, const hid_t array_
H5Z_XFORM_DO_OP1(resl, resr, long_long, -=, array_size)
else if(array_type == H5T_NATIVE_ULLONG)
{
#ifdef WIN32
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Cannot convert from unsigned int64 to double on win32")
#ifndef H5_ULLONG_TO_FP_CAST_WORKS
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Cannot convert from unsigned long long to double, this is required for data transform to function")
#else
H5Z_XFORM_DO_OP1(resl, resr, unsigned long_long, -=, array_size)
#endif
@ -1152,8 +1155,8 @@ H5Z_xform_eval_full(H5Z_node *tree, const size_t array_size, const hid_t array_
H5Z_XFORM_DO_OP1(resl, resr, long_long, *=, array_size)
else if(array_type == H5T_NATIVE_ULLONG)
{
#ifdef WIN32
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Cannot convert from unsigned int64 to double on win32")
#ifndef H5_ULLONG_TO_FP_CAST_WORKS
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Cannot convert from unsigned long long to double, this is required for data transform to function")
#else
H5Z_XFORM_DO_OP1(resl, resr, unsigned long_long, *=, array_size)
#endif
@ -1222,17 +1225,15 @@ H5Z_xform_eval_full(H5Z_node *tree, const size_t array_size, const hid_t array_
else if(array_type == H5T_NATIVE_LONG)
H5Z_XFORM_DO_OP1(resl, resr, long, /=, array_size)
else if(array_type == H5T_NATIVE_ULONG)
{
#ifdef WIN32
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Cannot convert from unsigned int64 to double on win32")
#else
H5Z_XFORM_DO_OP1(resl, resr, unsigned long_long, /=, array_size)
#endif
}
H5Z_XFORM_DO_OP1(resl, resr, unsigned long, /=, array_size)
else if(array_type == H5T_NATIVE_LLONG)
H5Z_XFORM_DO_OP1(resl, resr, long_long, /=, array_size)
else if(array_type == H5T_NATIVE_ULLONG)
H5Z_XFORM_DO_OP1(resl, resr, unsigned long_long, /=, array_size)
#ifndef H5_ULLONG_TO_FP_CAST_WORKS
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Cannot convert from unsigned long long to double, this is required for data transform to function")
#else
H5Z_XFORM_DO_OP1(resl, resr, unsigned long_long, /=, array_size)
#endif
else if(array_type == H5T_NATIVE_FLOAT)
H5Z_XFORM_DO_OP1(resl, resr, float, /=, array_size)
else if(array_type == H5T_NATIVE_DOUBLE)
@ -1593,7 +1594,7 @@ H5Z_xform_create(const char *expr)
* we don't need to allocate any space since no array will have to be
* stored */
if(count > 0)
if((data_xform_prop->dat_val_pointers->ptr_dat_val = (void*) HDcalloc(count, sizeof(void*))) == NULL)
if((data_xform_prop->dat_val_pointers->ptr_dat_val = (void**) HDcalloc(count, sizeof(void**))) == NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to allocate memory for pointers in transform array")
/* Initialize the num_ptrs field, which will be used to keep track of the number of copies
@ -1721,7 +1722,7 @@ H5Z_xform_copy(H5Z_data_xform_t **data_xform_prop)
}
if(count > 0)
if((new_data_xform_prop->dat_val_pointers->ptr_dat_val = (void*) HDcalloc(count, sizeof(void*))) == NULL)
if((new_data_xform_prop->dat_val_pointers->ptr_dat_val = (void**) HDcalloc(count, sizeof(void**))) == NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "unable to allocate memory for pointers in transform array")
/* Zero out num_pointers prior to H5Z_xform_cop_tree call; that call will increment it to the right amount */