# HG changeset patch # User Adam Chlipala # Date 1261596432 18000 # Node ID 8e240c007442208c057edb913d85c8a375992426 # Parent 2eb5852745015bed6287ca554c644363b28b607b Don't relify in bigLibs; fix some memory bugs in transactionals diff -r 2eb585274501 -r 8e240c007442 src/c/urweb.c --- a/src/c/urweb.c Wed Dec 23 12:25:34 2009 -0500 +++ b/src/c/urweb.c Wed Dec 23 14:27:12 2009 -0500 @@ -2851,7 +2851,8 @@ ctx->transactionals[i].rollback(ctx->transactionals[i].data); for (i = 0; i < ctx->used_transactionals; ++i) - ctx->transactionals[i].free(ctx->transactionals[i].data); + if (ctx->transactionals[i].free) + ctx->transactionals[i].free(ctx->transactionals[i].data); return uw_db_rollback(ctx); } @@ -2859,7 +2860,7 @@ void uw_register_transactional(uw_context ctx, void *data, uw_callback commit, uw_callback rollback, uw_callback free) { if (ctx->used_transactionals >= ctx->n_transactionals) { - ctx->transactionals = realloc(ctx->transactionals, ctx->used_transactionals+1); + ctx->transactionals = realloc(ctx->transactionals, sizeof(transactional) * (ctx->used_transactionals+1)); ++ctx->n_transactionals; } diff -r 2eb585274501 -r 8e240c007442 src/compiler.sml --- a/src/compiler.sml Wed Dec 23 12:25:34 2009 -0500 +++ b/src/compiler.sml Wed Dec 23 14:27:12 2009 -0500 @@ -561,7 +561,7 @@ | "library" => if accLibs then libs := pu (relify arg) :: !libs else - bigLibs := relify arg :: !bigLibs + bigLibs := arg :: !bigLibs | "path" => (case String.fields (fn ch => ch = #"=") arg of [n, v] => pathmap := M.insert (!pathmap, n, v)