Node validation checks against list

This commit is contained in:
2025-12-17 05:20:27 +00:00
parent d15022603f
commit 3904b3a1ee

View File

@@ -7,9 +7,9 @@
#include "../../common/platform/platform.h" #include "../../common/platform/platform.h"
#include <stddef.h> #include <stddef.h>
wapp_intern GenericList _node_to_list(GenericNode *node, u64 item_size); wapp_intern inline GenericList _node_to_list(GenericNode *node, u64 item_size);
wapp_intern void _dbl_list_validate(const GenericList *list, u64 item_size); wapp_intern inline void _dbl_list_validate(const GenericList *list, u64 item_size);
wapp_intern void _dbl_list_node_validate(const GenericNode *node, u64 item_size); wapp_intern inline void _dbl_list_node_validate(const GenericList *list, const GenericNode *node, u64 item_size);
GenericList *_dbl_list_alloc(const Allocator *allocator, u64 item_size) { GenericList *_dbl_list_alloc(const Allocator *allocator, u64 item_size) {
wapp_debug_assert(allocator != NULL, "`allocator` should not be NULL"); wapp_debug_assert(allocator != NULL, "`allocator` should not be NULL");
@@ -58,7 +58,7 @@ GenericNode *_dbl_list_get(const GenericList *list, u64 index, u64 item_size) {
void _dbl_list_push_front(GenericList *list, GenericNode *node, u64 item_size) { void _dbl_list_push_front(GenericList *list, GenericNode *node, u64 item_size) {
wapp_debug_assert(list != NULL && node != NULL && (node->item) != NULL, "`list`, `node` and `node->item` should not be NULL"); wapp_debug_assert(list != NULL && node != NULL && (node->item) != NULL, "`list`, `node` and `node->item` should not be NULL");
_dbl_list_validate(list, item_size); _dbl_list_validate(list, item_size);
_dbl_list_node_validate(node, item_size); _dbl_list_node_validate(list, node, item_size);
GenericList node_list = _node_to_list(node, item_size); GenericList node_list = _node_to_list(node, item_size);
@@ -81,7 +81,7 @@ void _dbl_list_push_front(GenericList *list, GenericNode *node, u64 item_size) {
void _dbl_list_push_back(GenericList *list, GenericNode *node, u64 item_size) { void _dbl_list_push_back(GenericList *list, GenericNode *node, u64 item_size) {
wapp_debug_assert(list != NULL && node != NULL && (node->item) != NULL, "`list`, `node` and `node->item` should not be NULL"); wapp_debug_assert(list != NULL && node != NULL && (node->item) != NULL, "`list`, `node` and `node->item` should not be NULL");
_dbl_list_validate(list, item_size); _dbl_list_validate(list, item_size);
_dbl_list_node_validate(node, item_size); _dbl_list_node_validate(list, node, item_size);
GenericList node_list = _node_to_list(node, item_size); GenericList node_list = _node_to_list(node, item_size);
@@ -104,7 +104,7 @@ void _dbl_list_push_back(GenericList *list, GenericNode *node, u64 item_size) {
void _dbl_list_insert(GenericList *list, GenericNode *node, u64 index, u64 item_size) { void _dbl_list_insert(GenericList *list, GenericNode *node, u64 index, u64 item_size) {
wapp_debug_assert(list != NULL && node != NULL && (node->item) != NULL, "`list`, `node` and `node->item` should not be NULL"); wapp_debug_assert(list != NULL && node != NULL && (node->item) != NULL, "`list`, `node` and `node->item` should not be NULL");
_dbl_list_validate(list, item_size); _dbl_list_validate(list, item_size);
_dbl_list_node_validate(node, item_size); _dbl_list_node_validate(list, node, item_size);
if (index == 0) { if (index == 0) {
_dbl_list_push_front(list, node, item_size); _dbl_list_push_front(list, node, item_size);
@@ -251,7 +251,8 @@ wapp_intern void _dbl_list_validate(const GenericList *list, u64 item_size) {
wapp_runtime_assert(list->item_size == item_size, "Invalid item provided"); wapp_runtime_assert(list->item_size == item_size, "Invalid item provided");
} }
wapp_intern void _dbl_list_node_validate(const GenericNode *node, u64 item_size) { wapp_intern void _dbl_list_node_validate(const GenericList *list, const GenericNode *node, u64 item_size) {
wapp_runtime_assert(node->magic == WAPP_DBL_NODE_MAGIC, "`node` isn't a valid wapp node type"); wapp_runtime_assert(node->magic == WAPP_DBL_NODE_MAGIC, "`node` isn't a valid wapp node type");
wapp_runtime_assert(list->item_size == node->item_size, "Mismatched `list` and `node` types");
wapp_runtime_assert(node->item_size == item_size, "Invalid item provided"); wapp_runtime_assert(node->item_size == item_size, "Invalid item provided");
} }