chiark / gitweb /
@@@ tvec and tty mess
[mLib] / test / tvec-main.c
index f2ba9cad36b0a9c1d83ff60f89c7aaa7f48ecf1f..05662927832a183a23125971950039279d148e41 100644 (file)
@@ -141,6 +141,18 @@ Automake driver options:\n\
 ", fp);
 }
 
+struct bench_resource {
+  pool_resource r;
+  struct bench_state **bst;
+};
+
+static void release_bench(pool_resource *r)
+{
+  struct bench_resource *br = (struct bench_resource *)r;
+
+  if (*br->bst) { bench_destroy(*br->bst); *br->bst = 0; }
+}
+
 /* --- @tvec_parseargs@ --- *
  *
  * Arguments:  @int argc@ = number of command-line arguments
@@ -170,6 +182,7 @@ void tvec_parseargs(int argc, char *argv[], struct tvec_state *tv_out,
   struct tvec_amargs am;
   double benchtime = 1.0, scale;
   struct bench_timer *tm;
+  struct bench_resource *br;
   const char *p; char *q;
   int opt;
   unsigned f = 0;
@@ -306,6 +319,9 @@ void tvec_parseargs(int argc, char *argv[], struct tvec_state *tv_out,
   }
 
   tvec_begin(tv_out, config, o); *argpos_out = optind;
+  POOL_NEW(br, tv_out->p_session);
+  br->bst = &tvec_benchstate;
+  POOL_ADD(tv_out->p_session, &br->r, release_bench);
 
 #undef f_bogus
 #undef f_bench