@@ -333,7 +333,15 @@ public void addData (Variable var, int rec_no, double data [])
333333 public void addData (Variable var , int rec_no , double data [], int data_offset , int data_length )
334334 throws CDFException
335335 {
336- var .putHyperData (rec_no , data_length , 1 , new long [] {data_offset }, new long [] {data_length }, new long [] {0 }, data );
336+ double data_slice [];
337+ if (data_offset != 0 || data_length != data .length )
338+ {
339+ // we need to slice the data - I can't see a way to do this with the Java CDF library
340+ data_slice = new double [data_length ];
341+ System .arraycopy (data , data_offset , data_slice , 0 , data_length );
342+ }
343+ else data_slice = data ;
344+ var .putHyperData (rec_no , data_length , 1 , new long [] {0 }, new long [] {data_length }, new long [] {0 }, data_slice );
337345 }
338346
339347 /** put a time stamp into a record in the CDF file
@@ -368,7 +376,15 @@ public void addTimeStamp (Variable var, int rec_no, long data [])
368376 public void addTimeStamp (Variable var , int rec_no , long data [], int data_offset , int data_length )
369377 throws CDFException
370378 {
371- var .putHyperData (rec_no , data_length , 1 , new long [] {data_offset }, new long [] {data_length }, new long [] {0 }, data );
379+ long data_slice [];
380+ if (data_offset != 0 || data_length != data .length )
381+ {
382+ // we need to slice the data - I can't see a way to do this with the Java CDF library
383+ data_slice = new long [data_length ];
384+ System .arraycopy (data , data_offset , data_slice , 0 , data_length );
385+ }
386+ else data_slice = data ;
387+ var .putHyperData (rec_no , data_length , 1 , new long [] {0 }, new long [] {data_length }, new long [] {0 }, data_slice );
372388 }
373389
374390
0 commit comments