[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: rmicdf problem
- Subject: Re: rmicdf problem
- Date: Thu, 08 Aug 1996 10:39:37 -0600
Tom,
> The software seems to have a problem with scalar (dimensionless)
> variables. In the file netcdf/JiNcSource.java, the code allocates
> memory for an array of Dimension classes (line 300). However, if the
> variable has no dimensions, this code will not do anything. On line
> 306, the code tries to access the first member of that dimension
> array. With no memory allocated, this line produces an exception and
> the code halts.
Here's a patch for JiNcSource.java that I believe will make it work for
scalar variables (at least the Test now works for a file containing a
scalar variable):
cvs diff: Diffing .
Index: JiNcSource.java
===================================================================
RCS file: /upc/share/CVS/rmicdf/netcdf/JiNcSource.java,v
retrieving revision 1.2
diff -c -r1.2 JiNcSource.java
*** 1.2 1996/08/08 16:04:36
--- JiNcSource.java 1996/08/08 16:35:07
***************
*** 288,294 ****
if (type == 0 && nelems == 0)
return;
if (type != NcVariable)
! throw new IOException("Bad file -- expected netCDF global atts");
mVarArray = new JiNcVar[nelems];
for (int i=0; i < nelems; i++){
mVarArray[i] = readVar(in);
--- 288,294 ----
if (type == 0 && nelems == 0)
return;
if (type != NcVariable)
! throw new IOException("Bad file -- expected netCDF variable");
mVarArray = new JiNcVar[nelems];
for (int i=0; i < nelems; i++){
mVarArray[i] = readVar(in);
***************
*** 305,311 ****
dims[i] = (JiDim)mDimArray[dimid].clone();
}
boolean isRecord = false;
! if (dims[0].mCount == 0){
isRecord = true;
dims[0].mCount = getNumRecords();
}
--- 305,311 ----
dims[i] = (JiDim)mDimArray[dimid].clone();
}
boolean isRecord = false;
! if (nelems > 0 && dims[0].mCount == 0){
isRecord = true;
dims[0].mCount = getNumRecords();
}
--Russ