Replace caseproto_clone with caseproto_ref
authorJohn Darrington <john@darrington.wattle.id.au>
Mon, 20 Jul 2009 04:34:38 +0000 (06:34 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Mon, 20 Jul 2009 04:34:38 +0000 (06:34 +0200)
Also unref the proto on destruction of the translator.

src/data/caseproto.c
src/data/caseproto.h
src/data/casereader-translator.c

index 68df141ba9f9638f72914b1822789764ac712d33..1a40213a537d295f78241a0c35a0594ba3a6262a 100644 (file)
@@ -59,26 +59,6 @@ caseproto_create (void)
   return proto;
 }
 
-
-struct caseproto *
-caseproto_clone (const struct caseproto *in)
-{
-  struct caseproto *proto = xmalloc (caseproto_size (in->n_widths));
-  proto->ref_cnt = 1;
-
-  proto->n_widths = in->n_widths;
-  proto->allocated_widths = in->allocated_widths;
-  
-  memcpy (proto->widths, in->widths, proto->n_widths *  sizeof *proto->widths);
-
-  proto->n_long_strings = in->n_long_strings;
-  proto->long_strings = NULL;
-  if ( proto->n_long_strings > 0)
-    caseproto_refresh_long_string_cache__ (proto);
-
-  return proto;
-}
-
 static void
 do_unref (void *proto_)
 {
index 3fc8c2c051451cddea401b712f534371eceb9043..b85a9f32d9260f02d6339b8f0852caca8518722f 100644 (file)
@@ -78,7 +78,6 @@ struct pool;
 
 /* Creation and destruction. */
 struct caseproto *caseproto_create (void) MALLOC_LIKE;
-struct caseproto *caseproto_clone (const struct caseproto *) ;
 static inline struct caseproto *caseproto_ref (const struct caseproto *);
 struct caseproto *caseproto_ref_pool (const struct caseproto *, struct pool *);
 static inline void caseproto_unref (struct caseproto *);
index c193d404dcccdf08a1a73c96109ee00c44f9e0ef..feffa15c4510ba97e57cd95705cd9afd290c1e04 100644 (file)
@@ -438,6 +438,7 @@ uniquify_destroy (void *aux)
   struct consolidator *cdr = aux;
 
   casereader_destroy (cdr->clone);
+  caseproto_unref (cdr->proto);
   free (cdr);
 
   return true;
@@ -461,7 +462,7 @@ casereader_create_distinct (struct casereader *input,
 {
   struct casereader *u ;
   struct casereader *ud ;
-  struct caseproto *output_proto = caseproto_clone (casereader_get_proto (input));
+  struct caseproto *output_proto = caseproto_ref (casereader_get_proto (input));
 
   struct consolidator *cdr = xmalloc (sizeof (*cdr));
   cdr->n = 0;