Added casereader_clone function.
[pspp-builds.git] / src / data / casefile.c
index 95e0388c4e8733ed74b6a3e89ebd780a0dbbe771..f0e700d530a131b3ec5560916d37a7100df2aba5 100644 (file)
@@ -157,7 +157,10 @@ casereader_read_xfer (struct casereader *ffr, struct ccase *c)
   if ( ! read_case ) return false;
 
   if ( ffr->destructive && casefile_in_core (cf) )
+    {
+      case_nullify (c);
     case_move (c, read_case);
+    }
   else
     case_clone (c, read_case);
 
@@ -173,6 +176,16 @@ casereader_destroy (struct casereader *r)
   r->class->destroy(r);
 }
 
+/* Creates a copy of R and returns it */
+struct casereader *
+casereader_clone(const struct casereader *r)
+{
+  /* Would we ever want to clone a destructive reader ?? */
+  assert ( ! r->destructive ) ;
+
+  return r->class->clone (r);
+}
+
 /* Destroys casefile CF. */
 void
 casefile_destroy(struct casefile *cf)