# HG changeset patch # User Mike Becker # Date 1747374842 -7200 # Node ID 1b118cd3e3695c068ed73bc170dde64222370b0e # Parent ede9a9e92ff9e7d459a9c4474d170cfd3abbfc39 replace all stdlib malloc/free with UCX allocator diff -r ede9a9e92ff9 -r 1b118cd3e369 src/ascension/scene_node.h --- a/src/ascension/scene_node.h Wed May 14 20:14:18 2025 +0200 +++ b/src/ascension/scene_node.h Fri May 16 07:54:02 2025 +0200 @@ -34,6 +34,9 @@ #include "datatypes.h" #include "transform.h" +// TODO: remove once this feature is implemented in UCX +#define cxZallocDefault(size) cxCallocDefault(1, size) + typedef struct asc_scene_node_s AscSceneNode; typedef void(*asc_scene_node_destroy_func)(AscSceneNode*); diff -r ede9a9e92ff9 -r 1b118cd3e369 src/mesh.c --- a/src/mesh.c Wed May 14 20:14:18 2025 +0200 +++ b/src/mesh.c Fri May 16 07:54:02 2025 +0200 @@ -28,6 +28,8 @@ #include "ascension/error.h" #include "ascension/mesh.h" +#include + #include void asc_mesh_allocate_buffers(AscMesh *mesh, unsigned count) { @@ -72,7 +74,7 @@ void asc_mesh_destroy(AscMesh *mesh) { asc_mesh_free_buffers(mesh, 1); - free(mesh->vtx_data); + cxFreeDefault(mesh->vtx_data); } void asc_mesh_init_plane_2d(AscMesh *mesh, struct asc_mesh_init_plane_2d_args args) { @@ -84,7 +86,7 @@ // free any previous data if (mesh->vtx_data && mesh->vtx_data_size < required_memory) { - free(mesh->vtx_data); + cxFreeDefault(mesh->vtx_data); mesh->vtx_data = NULL; } @@ -93,7 +95,7 @@ if (mesh->vtx_data == NULL) { asc_dprintf("Create plane in VBO %u and VAO %u", mesh->vbo, mesh->vao); mesh->vtx_data_size = required_memory; - data = malloc(mesh->vtx_data_size); + data = cxMallocDefault(mesh->vtx_data_size); mesh->vtx_data = (float*) data; } else { data = (AscMeshVertex2d*) mesh->vtx_data; diff -r ede9a9e92ff9 -r 1b118cd3e369 src/scene_node.c --- a/src/scene_node.c Wed May 14 20:14:18 2025 +0200 +++ b/src/scene_node.c Fri May 16 07:54:02 2025 +0200 @@ -46,7 +46,7 @@ } AscSceneNode *asc_scene_node_empty(void) { - AscSceneNode *node = calloc(1, sizeof(AscSceneNode)); + AscSceneNode *node = cxZallocDefault(sizeof(AscSceneNode)); node->render_group = ASC_RENDER_GROUP_NONE; node->scale = asc_vec3f_one; asc_transform_identity(node->transform); @@ -76,12 +76,12 @@ cx_foreach(AscSceneNode*, child, iter) { if (!iter.exiting) continue; asc_scene_node_destroy(child); - free(child); + cxFreeDefault(child); } } void asc_scene_node_name(AscSceneNode *node, const char *name) { - free(node->name.ptr); + cx_strfree(&node->name); if (name == NULL) { node->name.ptr = NULL; node->name.length = 0; diff -r ede9a9e92ff9 -r 1b118cd3e369 src/shader.c --- a/src/shader.c Wed May 14 20:14:18 2025 +0200 +++ b/src/shader.c Fri May 16 07:54:02 2025 +0200 @@ -172,7 +172,8 @@ cxBufferInit(&buffer, NULL, 1024, NULL, CX_BUFFER_AUTO_EXTEND); cx_stream_copy(f, &buffer, (cx_read_func) fread, cxBufferWriteFunc); cxBufferPut(&buffer, '\0'); - *code = realloc(buffer.space, buffer.size); + cxBufferShrink(&buffer, 0); + *code = buffer.space; return *code == NULL ? -1 : 0; } @@ -184,6 +185,6 @@ } void asc_shader_free_codes(AscShaderCodes codes) { - free(codes.vtx); - free(codes.frag); + cxFreeDefault(codes.vtx); + cxFreeDefault(codes.frag); } diff -r ede9a9e92ff9 -r 1b118cd3e369 src/sprite.c --- a/src/sprite.c Wed May 14 20:14:18 2025 +0200 +++ b/src/sprite.c Fri May 16 07:54:02 2025 +0200 @@ -60,7 +60,7 @@ } AscSceneNode *asc_sprite_create(struct asc_sprite_create_args args) { - AscSprite *sprite = calloc(1, sizeof(AscSprite)); + AscSprite *sprite = cxZallocDefault(sizeof(AscSprite)); // sprite parameters args.texture->refcount++; diff -r ede9a9e92ff9 -r 1b118cd3e369 src/text.c --- a/src/text.c Wed May 14 20:14:18 2025 +0200 +++ b/src/text.c Fri May 16 07:54:02 2025 +0200 @@ -83,12 +83,12 @@ asc_mesh_destroy(&sprite->mesh); asc_texture_destroy(sprite->texture, 1); assert(sprite->texture->refcount == 0); - free(sprite->texture); + cxFreeDefault(sprite->texture); cx_strfree(&text->text); } AscSceneNode *asc_text_create(struct asc_text_create_args args) { - AscText *text = calloc(1, sizeof(AscText)); + AscText *text = cxZallocDefault(sizeof(AscText)); AscSceneNode *node = &text->base.data; // node properties @@ -112,7 +112,7 @@ // initialize texture // mesh will be created in the update func - text->base.texture = malloc(sizeof(AscTexture)); + text->base.texture = cxMallocDefault(sizeof(AscTexture)); asc_texture_init_rectangle(text->base.texture, 1); asc_text_update(node);