diff options
author | Adam Chlipala <adam@chlipala.net> | 2014-04-17 17:41:24 -0400 |
---|---|---|
committer | Adam Chlipala <adam@chlipala.net> | 2014-04-17 17:41:24 -0400 |
commit | 1e7619137f25ceb0cef59100bc5a41ffc21a1412 (patch) | |
tree | ade181b348325d63d12dbadc991499c0245e804c /src/c/urweb.c | |
parent | 9a7852b68da59f0ffce80148e913145609251e75 (diff) |
uw_register_transactional() can return error codes
Diffstat (limited to 'src/c/urweb.c')
-rw-r--r-- | src/c/urweb.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/c/urweb.c b/src/c/urweb.c index 7417e4b7..9a1e40a7 100644 --- a/src/c/urweb.c +++ b/src/c/urweb.c @@ -3469,11 +3469,12 @@ int uw_commit(uw_context ctx) { size_t uw_transactionals_max = SIZE_MAX; -void uw_register_transactional(uw_context ctx, void *data, uw_callback commit, uw_callback rollback, +int uw_register_transactional(uw_context ctx, void *data, uw_callback commit, uw_callback rollback, uw_callback_with_retry free) { if (ctx->used_transactionals >= ctx->n_transactionals) { if (ctx->used_transactionals+1 > uw_transactionals_max) - uw_error(ctx, FATAL, "Exceeded limit on number of transactionals"); + // Exceeded limit on number of transactionals. + return -1; ctx->transactionals = realloc(ctx->transactionals, sizeof(transactional) * (ctx->used_transactionals+1)); ++ctx->n_transactionals; } @@ -3482,6 +3483,8 @@ void uw_register_transactional(uw_context ctx, void *data, uw_callback commit, u ctx->transactionals[ctx->used_transactionals].commit = commit; ctx->transactionals[ctx->used_transactionals].rollback = rollback; ctx->transactionals[ctx->used_transactionals++].free = free; + + return 0; } |