diff src/c/urweb.c @ 1084:8e240c007442

Don't relify in bigLibs; fix some memory bugs in transactionals
author Adam Chlipala <adamc@hcoop.net>
date Wed, 23 Dec 2009 14:27:12 -0500
parents 2eb585274501
children e81434513720
line wrap: on
line diff
--- 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;
   }