Return error messages as binaries
This commit is contained in:
20
c_src/geef.c
20
c_src/geef.c
@@ -75,15 +75,23 @@ ERL_NIF_TERM
|
|||||||
geef_error(ErlNifEnv *env)
|
geef_error(ErlNifEnv *env)
|
||||||
{
|
{
|
||||||
const git_error *error;
|
const git_error *error;
|
||||||
|
ErlNifBinary bin;
|
||||||
|
const char *message;
|
||||||
|
size_t len;
|
||||||
|
|
||||||
error = giterr_last();
|
error = giterr_last();
|
||||||
if (error) {
|
if (error && error->message)
|
||||||
return enif_make_tuple2(env, atoms.error,
|
message = error->message;
|
||||||
enif_make_string(env, error->message, ERL_NIF_LATIN1));
|
else
|
||||||
}
|
message = "No message specified";
|
||||||
|
|
||||||
return enif_make_tuple2(env, atoms.error,
|
len = strlen(message);
|
||||||
enif_make_string(env, "No message specified", ERL_NIF_LATIN1));
|
if (!enif_alloc_binary(len, &bin))
|
||||||
|
return atoms.error;
|
||||||
|
|
||||||
|
memcpy(bin.data, message, len);
|
||||||
|
|
||||||
|
return enif_make_tuple2(env, atoms.error, enif_make_binary(env, &bin));
|
||||||
}
|
}
|
||||||
|
|
||||||
static ErlNifFunc geef_funcs[] =
|
static ErlNifFunc geef_funcs[] =
|
||||||
|
|||||||
Reference in New Issue
Block a user