C: fixed remaining memory bug in array indexer

This commit is contained in:
Celine Mercier
2019-09-01 17:24:57 +02:00
parent 073d98db08
commit d491480af2

View File

@ -30,20 +30,21 @@ index_t obi_index_array(Obi_indexer_p indexer, const void* value, uint8_t elt_si
index_t idx; index_t idx;
int32_t length_bytes; int32_t length_bytes;
// fprintf(stderr, "\nelt size in C: %u", elt_size); //fprintf(stderr, "\nelt size in C: %u, value len = %d\n", elt_size, value_length);
//for (int i=0; i<value_length; i++) //for (int i=0; i<value_length; i++)
// fprintf(stderr, "\nvalue %d", ((obibool_t*)value)[i]); // fprintf(stderr, "%d - ", ((obiint_t*)value)[i]);
length_bytes = value_length * elt_size / 8; length_bytes = value_length * elt_size / 8;
//fprintf(stderr, "\nlength_bytes: %d", length_bytes);
// Encode value // Encode value
value_b = obi_blob((byte_t*)value, elt_size, length_bytes, length_bytes); value_b = obi_blob((byte_t*)value, elt_size, length_bytes, length_bytes);
if (value_b == NULL) if (value_b == NULL)
return -1; return -1;
//for (int i=0; i<value_length; i++) //for (int i=0; i<value_length; i++)
// fprintf(stderr, "\nin blob: value %d", ((obibool_t*)(value_b->value))[i]); // fprintf(stderr, "\nin blob: value %d\n", ((obiint_t*)(value_b->value))[i]);
// Add in the indexer // Add in the indexer
idx = obi_indexer_add(indexer, value_b); idx = obi_indexer_add(indexer, value_b);
@ -61,8 +62,14 @@ const void* obi_retrieve_array(Obi_indexer_p indexer, index_t idx, int32_t* valu
// Get encoded value // Get encoded value
value_b = obi_indexer_get(indexer, idx); value_b = obi_indexer_get(indexer, idx);
//fprintf(stderr, "\nlen in blob: %d, elt size %u", value_b->length_decoded_value, value_b->element_size);
// Store array length // Store array length
*value_length_p = (value_b->length_decoded_value) / (value_b->element_size) * 8; *value_length_p = (value_b->length_decoded_value) * 8 / (value_b->element_size);
//fprintf(stderr, "\ngetting length: %d\n", *value_length_p);
//for (int i=0; i<*value_length_p; i++)
// fprintf(stderr, "\nin blob getting: value %d\n", ((obiint_t*)(value_b->value))[i]);
// Return pointer on mapped array // Return pointer on mapped array
return ((void*) (value_b->value)); return ((void*) (value_b->value));