watch -c -n 1 make
a.out: test.c ${NAME} ${THIS}
- ${CC} ${CFLAGS} test.c ccera.a
+ ${CC} ${CFLAGS} ccera.a test.c
test: a.out
valgrind ./a.out
/* By: agilliar <agilliar@student.42mulhouse.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2026/04/29 16:08:57 by agilliar #+# #+# */
-/* Updated: 2026/05/06 02:32:20 by agilliar ### ########.fr */
+/* Updated: 2026/05/06 18:37:26 by agilliar ### ########.fr */
/* */
/* ************************************************************************** */
struct s_defer_pair defers[MAX_DEFERS];
} t_defer;
+__attribute__((__always_inline__))
+inline void *foo(void)
+{
+ return (__builtin_alloca(10));
+}
+
void defer_new(t_defer *store);
void defer_delete(t_defer *store);
void defer_re(t_defer *store);
void *catch(void (f)(void *), void *dat);
void panic(void *err)
- __attribute__((noreturn, nonnull(1)));
+ __attribute__((noreturn, nonnull(1)));
bool panicking(void);
typedef union u_value t_value;
/* By: agilliar <agilliar@student.42mulhouse.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2026/05/05 17:31:36 by agilliar #+# #+# */
-/* Updated: 2026/05/06 02:31:46 by agilliar ### ########.fr */
+/* Updated: 2026/05/06 18:37:20 by agilliar ### ########.fr */
/* */
/* ************************************************************************** */
/* By: agilliar <agilliar@student.42mulhouse.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2026/04/30 17:19:58 by agilliar #+# #+# */
-/* Updated: 2026/05/06 02:32:34 by agilliar ### ########.fr */
+/* Updated: 2026/05/06 17:58:12 by agilliar ### ########.fr */
/* */
/* ************************************************************************** */
t_value arg = value_bytes_new(strlen(s) + 1);
defer(value_destroy, &arg);
- //panic("A");
+ panic("A");
t_value state = value_list_new(0);
defer(value_destroy, &state);
//panic("B");
defer(value_destroy, &expr);
//panic("E");
t_value val = value_copy(expr);
- defer(value_destroy, &val);
+ errdefer(value_destroy, &val);
//panic("F");
}
int main(void)
{
+ char *b = foo();
+ b[0] = 'a';
+ b[1] = '\0';
+ printf("%s\n", b);
if (char *err = catch(main2, "Hello cera!"))
{
printf("%s\n", err);