Added possiblity to print custom abort message
This commit is contained in:
parent
09b2f62fc3
commit
8e90a858ad
3 changed files with 14 additions and 13 deletions
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
|
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2023/11/03 14:31:12 by maiboyer #+# #+# */
|
/* Created: 2023/11/03 14:31:12 by maiboyer #+# #+# */
|
||||||
/* Updated: 2024/05/08 15:19:25 by maiboyer ### ########.fr */
|
/* Updated: 2024/05/08 16:11:35 by maiboyer ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -44,14 +44,11 @@ typedef struct s_list
|
||||||
|
|
||||||
typedef bool t_error;
|
typedef bool t_error;
|
||||||
|
|
||||||
void me_abort(void);
|
void me_abort(t_str msg);
|
||||||
void me_exit(t_i32 code);
|
void me_exit(t_i32 code);
|
||||||
void me_free(void *ptr);
|
void me_free(void *ptr);
|
||||||
void print_trace(void);
|
void print_trace(void);
|
||||||
|
|
||||||
#define ERROR 1
|
#define ERROR 1
|
||||||
#define NO_ERROR 0
|
#define NO_ERROR 0
|
||||||
|
|
||||||
#define __NonNullable
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
|
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/05/07 10:13:06 by maiboyer #+# #+# */
|
/* Created: 2024/05/07 10:13:06 by maiboyer #+# #+# */
|
||||||
/* Updated: 2024/05/07 22:00:20 by maiboyer ### ########.fr */
|
/* Updated: 2024/05/08 16:12:19 by maiboyer ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -33,7 +33,7 @@ t_arena_page *find_page_for(t_usize data_size, t_arena_page *page)
|
||||||
alloc_arena_page(usize_round_up_to(data_size + sizeof(*block),
|
alloc_arena_page(usize_round_up_to(data_size + sizeof(*block),
|
||||||
ARENA_SIZE_DEFAULT),
|
ARENA_SIZE_DEFAULT),
|
||||||
&page->next))
|
&page->next))
|
||||||
return (me_abort(), NULL);
|
return (me_abort("Failed Malloc"), NULL);
|
||||||
page = page->next;
|
page = page->next;
|
||||||
}
|
}
|
||||||
block = (t_arena_block *)(&page[1]);
|
block = (t_arena_block *)(&page[1]);
|
||||||
|
|
@ -47,7 +47,7 @@ t_arena_page *find_page_for(t_usize data_size, t_arena_page *page)
|
||||||
}
|
}
|
||||||
page = page->next;
|
page = page->next;
|
||||||
}
|
}
|
||||||
return ((me_abort(), NULL));
|
return ((me_abort("Found no pages for memory"), NULL));
|
||||||
}
|
}
|
||||||
|
|
||||||
// the is twice the size of size_t, only to stay aligned on a 16 byte
|
// the is twice the size of size_t, only to stay aligned on a 16 byte
|
||||||
|
|
@ -60,7 +60,7 @@ void *me_malloc(t_usize size)
|
||||||
size = usize_round_up_to(size, 16);
|
size = usize_round_up_to(size, 16);
|
||||||
arena = find_page_for(size, get_head_arena());
|
arena = find_page_for(size, get_head_arena());
|
||||||
if (get_block_for_page(size, arena, &block))
|
if (get_block_for_page(size, arena, &block))
|
||||||
return (me_abort(), NULL);
|
return (me_abort("Found no page for me_malloc"), NULL);
|
||||||
block->free = false;
|
block->free = false;
|
||||||
return ((t_u8 *)block + sizeof(*block));
|
return ((t_u8 *)block + sizeof(*block));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,12 @@
|
||||||
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
|
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/05/07 11:08:03 by maiboyer #+# #+# */
|
/* Created: 2024/05/07 11:08:03 by maiboyer #+# #+# */
|
||||||
/* Updated: 2024/05/08 16:06:58 by maiboyer ### ########.fr */
|
/* Updated: 2024/05/08 16:11:05 by maiboyer ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "me/printf/printf.h"
|
#include "me/fs/putstr_fd.h"
|
||||||
|
#include "me/fs/putendl_fd.h"
|
||||||
#include "me/types.h"
|
#include "me/types.h"
|
||||||
#include <execinfo.h>
|
#include <execinfo.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
@ -73,9 +74,12 @@ static void print_trace(void)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void me_abort(void)
|
void me_abort(t_str msg)
|
||||||
{
|
{
|
||||||
me_eprintf("Abort:\n");
|
if (msg == NULL)
|
||||||
|
msg = "No message (msg was NULL)";
|
||||||
|
me_putstr_fd("Abort: ", 2);
|
||||||
|
me_putendl_fd(msg, 2);
|
||||||
print_trace();
|
print_trace();
|
||||||
me_exit(1);
|
me_exit(1);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue