mirror of https://github.com/ecmwf/eccodes.git
Check return value of grib_buffer_replace
This commit is contained in:
parent
e4bf750349
commit
81f40a3735
|
@ -1350,10 +1350,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
|
||||
/* ECC-259: Set correct number of values */
|
||||
ret = grib_set_long_internal(a->parent->h, self->number_of_values, *len);
|
||||
if (ret)
|
||||
return ret;
|
||||
if (ret) return ret;
|
||||
|
||||
grib_buffer_replace(a, buffer, size, 1, 1);
|
||||
ret = grib_buffer_replace(a, buffer, size, 1, 1);
|
||||
if (ret) return ret;
|
||||
|
||||
grib_context_free(a->context, buffer);
|
||||
grib_context_free(a->context, X);
|
||||
|
|
|
@ -236,7 +236,8 @@ static int pack_double(grib_accessor* a, const double* cval, size_t* len)
|
|||
constantFieldHalfByte = 0;
|
||||
if ((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->half_byte, constantFieldHalfByte)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
grib_buffer_replace(a, NULL, 0, 1, 1);
|
||||
ret = grib_buffer_replace(a, NULL, 0, 1, 1);
|
||||
if (ret != GRIB_SUCCESS) return ret;
|
||||
return GRIB_SUCCESS;
|
||||
break;
|
||||
case GRIB_NO_VALUES:
|
||||
|
@ -252,7 +253,8 @@ static int pack_double(grib_accessor* a, const double* cval, size_t* len)
|
|||
return ret;
|
||||
if ((ret = grib_set_long_internal(grib_handle_of_accessor(a), self->half_byte, constantFieldHalfByte)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
grib_buffer_replace(a, NULL, 0, 1, 1);
|
||||
ret = grib_buffer_replace(a, NULL, 0, 1, 1);
|
||||
if (ret != GRIB_SUCCESS) return ret;
|
||||
return GRIB_SUCCESS;
|
||||
break;
|
||||
case GRIB_INVALID_BPV:
|
||||
|
|
|
@ -106,7 +106,7 @@ grib_accessor_class* grib_accessor_class_g1_message_length = &_grib_accessor_cla
|
|||
static void init(grib_accessor* a, const long len, grib_arguments* args)
|
||||
{
|
||||
grib_accessor_g1_message_length* self = (grib_accessor_g1_message_length*)a;
|
||||
self->sec4_length = grib_arguments_get_name(grib_handle_of_accessor(a), args, 0);
|
||||
self->sec4_length = grib_arguments_get_name(grib_handle_of_accessor(a), args, 0);
|
||||
}
|
||||
|
||||
int grib_get_g1_message_size(grib_handle* h, grib_accessor* tl, grib_accessor* s4,
|
||||
|
@ -134,15 +134,12 @@ int grib_get_g1_message_size(grib_handle* h, grib_accessor* tl, grib_accessor* s
|
|||
|
||||
if (slen < 120 && (tlen & 0x800000)) {
|
||||
/* printf("DECODING large grib tlen=%ld slen=%ld\n",tlen,slen); */
|
||||
|
||||
tlen &= 0x7fffff;
|
||||
tlen *= 120;
|
||||
tlen -= slen;
|
||||
tlen += 4;
|
||||
|
||||
slen = tlen - s4->offset - 4; /* 4 is for 7777 */
|
||||
|
||||
/*printf("DECODING large grib total=%ld section4=%ld\n",tlen,slen);*/
|
||||
}
|
||||
|
||||
*total_length = tlen;
|
||||
|
@ -184,7 +181,6 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len)
|
|||
slen = t120 * 120 - tlen;
|
||||
tlen = 0x800000 | t120;
|
||||
|
||||
/* printf("ENCODING large grib total = %ld tlen=%ld slen=%ld \n",*val,tlen,slen); */
|
||||
*len = 1;
|
||||
if ((ret = grib_pack_long(s4, &slen, len)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
@ -198,11 +194,9 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len)
|
|||
|
||||
{
|
||||
long total_length = -1, sec4_length = -1;
|
||||
grib_get_g1_message_size(grib_handle_of_accessor(a),
|
||||
a,
|
||||
grib_get_g1_message_size(grib_handle_of_accessor(a), a,
|
||||
grib_find_accessor(grib_handle_of_accessor(a), self->sec4_length),
|
||||
&total_length,
|
||||
&sec4_length);
|
||||
&total_length, &sec4_length);
|
||||
if (total_length != *val) {
|
||||
const char* cclass_name = a->cclass->name;
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR,
|
||||
|
@ -212,7 +206,6 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len)
|
|||
grib_context_log(a->context, GRIB_LOG_ERROR, "Hint: Try encoding as GRIB2\n");
|
||||
return GRIB_ENCODING_ERROR;
|
||||
}
|
||||
Assert(total_length == *val);
|
||||
}
|
||||
|
||||
return GRIB_SUCCESS;
|
||||
|
@ -222,16 +215,14 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len)
|
|||
{
|
||||
grib_accessor_g1_message_length* self = (grib_accessor_g1_message_length*)a;
|
||||
int ret;
|
||||
|
||||
long total_length, sec4_length;
|
||||
|
||||
if ((ret = grib_get_g1_message_size(grib_handle_of_accessor(a),
|
||||
a,
|
||||
if ((ret = grib_get_g1_message_size(grib_handle_of_accessor(a), a,
|
||||
grib_find_accessor(grib_handle_of_accessor(a), self->sec4_length),
|
||||
&total_length,
|
||||
&sec4_length)) != GRIB_SUCCESS)
|
||||
&total_length, &sec4_length)) != GRIB_SUCCESS)
|
||||
{
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
*val = total_length;
|
||||
return GRIB_SUCCESS;
|
||||
|
|
Loading…
Reference in New Issue