diff --git a/idf_component.yml b/idf_component.yml index f39a2a5..b943d01 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,6 +1,6 @@ description: ESP32 ESP-IDF component for vector (dynamic array) url: https://github.com/aZholtikov/zh_vector -version: "2.5.0" +version: "2.5.1" license: "Apache-2.0" maintainers: - "Alexey Zholtikov " diff --git a/include/zh_vector.h b/include/zh_vector.h index aa91881..e48b193 100644 --- a/include/zh_vector.h +++ b/include/zh_vector.h @@ -74,7 +74,7 @@ extern "C" /** * @brief Get the current number of elements in the vector. * - * @param[in] vector Pointer to the vector (must not be NULL) + * @param[in] vector Pointer to the vector handle (must not be NULL) * @param[out] size Pointer to receive the current size (must not be NULL) * * @return ESP_OK on success @@ -86,7 +86,7 @@ extern "C" /** * @brief Get the current capacity of the vector. * - * @param[in] vector Pointer to the vector (must not be NULL) + * @param[in] vector Pointer to the vector handle (must not be NULL) * @param[out] capacity Pointer to receive the current capacity (must not be NULL) * * @return ESP_OK on success @@ -102,7 +102,7 @@ extern "C" * a copy of the provided item at index 0. The vector capacity * will be increased if necessary. * - * @param[in,out] vector Pointer to the vector (must not be NULL) + * @param[in,out] vector Pointer to the vector handle (must not be NULL) * @param[in] item Pointer to the item to insert (must not be NULL) * * @return ESP_OK on success @@ -118,7 +118,7 @@ extern "C" * Creates a copy of the provided item and adds it to the end of the vector. * The vector capacity will be increased if necessary. * - * @param[in,out] vector Pointer to the vector (must not be NULL) + * @param[in,out] vector Pointer to the vector handle (must not be NULL) * @param[in] item Pointer to the item to append (must not be NULL) * * @return ESP_OK on success @@ -134,7 +134,7 @@ extern "C" * Copies the provided item into the existing element at the given index. * The element must already exist and be non-NULL. * - * @param[in,out] vector Pointer to the vector (must not be NULL) + * @param[in,out] vector Pointer to the vector handle (must not be NULL) * @param[in] index Index of the element to replace (must be < size) * @param[in] item Pointer to the new item data (must not be NULL) * @@ -147,7 +147,7 @@ extern "C" /** * @brief Retrieve a copy of the element at the specified index. * - * @param[in] vector Pointer to the vector (must not be NULL) + * @param[in] vector Pointer to the vector handle (must not be NULL) * @param[in] index Index of the element to retrieve (must be < size) * @param[out] item Pointer to buffer where the element will be copied (must not be NULL) * @@ -167,7 +167,7 @@ extern "C" * Frees the element's memory, shifts remaining elements, and updates size. * Capacity may be reduced if it exceeds twice the current size. * - * @param[in,out] vector Pointer to the vector (must not be NULL) + * @param[in,out] vector Pointer to the vector handle (must not be NULL) * @param[in] index Index of the element to delete (must be < size) * * @return ESP_OK on success @@ -182,7 +182,7 @@ extern "C" * Frees the last element's memory and updates size. * Capacity may be reduced if it exceeds twice the current size. * - * @param[in,out] vector Pointer to the vector (must not be NULL) + * @param[in,out] vector Pointer to the vector handle (must not be NULL) * * @return ESP_OK on success * @return ESP_ERR_INVALID_ARG if vector or *vector is NULL or vector is empty @@ -196,7 +196,7 @@ extern "C" * Frees the first element's memory, shifts remaining elements, and updates size. * Capacity may be reduced if it exceeds twice the current size. * - * @param[in,out] vector Pointer to the vector (must not be NULL) + * @param[in,out] vector Pointer to the vector handle (must not be NULL) * * @return ESP_OK on success * @return ESP_ERR_INVALID_ARG if vector or *vector is NULL or vector is empty @@ -210,7 +210,7 @@ extern "C" * Compares elements using memcmp and removes subsequent duplicates. * Elements are compared based on their raw binary content. * - * @param[in,out] vector Pointer to the vector (must not be NULL) + * @param[in,out] vector Pointer to the vector handle (must not be NULL) * * @return ESP_OK on success * @return ESP_ERR_INVALID_ARG if vector or *vector is NULL @@ -224,7 +224,7 @@ extern "C" * Searches for an element whose binary content matches the provided item * using memcmp. Returns the index of the first match or -1 if not found. * - * @param[in] vector Pointer to the vector (must not be NULL) + * @param[in] vector Pointer to the vector handle (must not be NULL) * @param[in] item Pointer to the item to search for (must not be NULL) * @param[out] index Pointer to receive the found index (-1 if not found) (must not be NULL) * @@ -242,7 +242,7 @@ extern "C" * and size) matches the provided value. Comparison starts from the * specified index. * - * @param[in] vector Pointer to the vector containing structures (must not be NULL) + * @param[in] vector Pointer to the vector handle containing structures (must not be NULL) * @param[in] sample_struct Pointer to a sample structure (used for field offset calculation) (must not be NULL) * @param[in] item Pointer to the field within the structure (e.g., `&sample.id`). Used to calculate the field offset (must not be NULL) * @param[in] size Size of the field in bytes (must be > 0) diff --git a/version.txt b/version.txt index fad066f..4fd0fe3 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -2.5.0 \ No newline at end of file +2.5.1 \ No newline at end of file diff --git a/zh_vector.c b/zh_vector.c index 29b2bf0..3cf6f41 100644 --- a/zh_vector.c +++ b/zh_vector.c @@ -152,12 +152,13 @@ esp_err_t zh_vector_push_front(zh_vector_t **vector, const void *item) uint16_t new_capacity = _calc_new_capacity((*vector)->capacity); ZH_ERROR_CHECK(_resize(*vector, new_capacity) == ESP_OK, ESP_ERR_NO_MEM, xSemaphoreGive((*vector)->mutex), "Adding item to beginning of vector failed. Memory reallocation failed."); } + void *new_item = heap_caps_calloc(1, (*vector)->unit, MALLOC_CAP_8BIT); + ZH_ERROR_CHECK(new_item != NULL, ESP_ERR_NO_MEM, xSemaphoreGive((*vector)->mutex), "Adding item to beginning of vector failed. Element allocation failed."); for (uint16_t i = (*vector)->size; i > 0; --i) { (*vector)->items[i] = (*vector)->items[i - 1]; } - (*vector)->items[0] = heap_caps_calloc(1, (*vector)->unit, MALLOC_CAP_8BIT); - ZH_ERROR_CHECK((*vector)->items[0] != NULL, ESP_ERR_NO_MEM, xSemaphoreGive((*vector)->mutex), "Adding item to beginning of vector failed. Element allocation failed."); + (*vector)->items[0] = new_item; memcpy((*vector)->items[0], item, (*vector)->unit); (*vector)->size++; xSemaphoreGive((*vector)->mutex);