Return error messages as binaries

This commit is contained in:
Carlos Martín Nieto
2013-04-02 06:28:50 +02:00
parent 24c78039a8
commit 7de2b5f4b6

View File

@@ -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[] =