summaryrefslogtreecommitdiff
path: root/testsuite/tests/runtime-C-exceptions/stub_test.c
blob: b7ffd242015243ef405d957b0ca3a22c7bed0c3a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <string.h>
#include "caml/memory.h"
#include "caml/alloc.h"
#include "caml/mlvalues.h"
#include "caml/fail.h"

char *some_dynamic_string_that_should_be_freed()
{
    return strdup("bar");
}

CAMLexport value dynamic_invalid_argument(value unit)
{
    CAMLparam1(unit);
    char *dynamic_msg = some_dynamic_string_that_should_be_freed();
    value msg = caml_copy_string(dynamic_msg);
    free(dynamic_msg);
    caml_invalid_argument_value(msg);
    CAMLnoreturn;
}