From d22134376c4b02ec937becfdc9b69af8c0e73528 Mon Sep 17 00:00:00 2001 From: Dennis Heimbigner Date: Wed, 31 Oct 2012 20:07:11 +0000 Subject: [PATCH] Fix bug NCF-199 --- ncgen/Makefile.am | 6 ++++-- ncgen/env | 2 +- ncgen/generate.c | 4 ++-- ncgen/ncf199.cdl | 11 +++++++++++ ncgen/run_nc4_tests.sh | 3 +++ 5 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 ncgen/ncf199.cdl diff --git a/ncgen/Makefile.am b/ncgen/Makefile.am index d2fedbb81..05e965de5 100644 --- a/ncgen/Makefile.am +++ b/ncgen/Makefile.am @@ -21,7 +21,8 @@ man_MANS = ncgen.1 # These files all need to be distributed. EXTRA_DIST = ncgen.y ncgenyy.c ncgen.l $(man_MANS) internals.html \ -run_tests.sh run_nc4_tests.sh c0.cdl ref_camrun.cdl +run_tests.sh run_nc4_tests.sh c0.cdl ref_camrun.cdl \ +ncf199.cdl # This shell script causes ncgen to build a classic and a 64-bit # offset file from a cdl file shipped with the distribution. @@ -32,7 +33,8 @@ TESTS += run_nc4_tests.sh endif # USE_NETCDF4 #endif # !BUILD_DLL -CLEANFILES = c0.nc c0_64.nc c0_4.nc c0_4c.nc ref_camrun.c +CLEANFILES = c0.nc c0_64.nc c0_4.nc c0_4c.nc ref_camrun.c \ + ncf199.nc # These rule are used if someone wants to rebuild ncgenyy.c or ncgentab.c # Otherwise never invoked, but records how to do it. diff --git a/ncgen/env b/ncgen/env index f326ac11c..fee4e6de1 100644 --- a/ncgen/env +++ b/ncgen/env @@ -3,7 +3,7 @@ K="-k3" F="ref_tst_opaque_data.cdl" F="MAPSS_combined-MAPSS_SC-20120828154820.cdl" -F="z.cdl" +F="test.cdl" #B="-B12" DBG="-d" #DBG="-D2" diff --git a/ncgen/generate.c b/ncgen/generate.c index 29cc86543..15fb11cb5 100644 --- a/ncgen/generate.c +++ b/ncgen/generate.c @@ -263,8 +263,8 @@ generate_arrayr(Symbol* vsym, int i; Odometer* slabodom; int nextunlimited = findunlimited(dimset,dimindex+1); - ASSERT((dimindex < lastunlimited - && (dimset->dimsyms[dimindex]->dim.isunlimited))); + ASSERT((dimindex < nextunlimited + && (dimset->dimsyms[nextunlimited]->dim.isunlimited))); /* build a sub odometer */ slabodom = newsubodometer(odom,dimset,dimindex,nextunlimited); /* compute the starting offset in our datalist diff --git a/ncgen/ncf199.cdl b/ncgen/ncf199.cdl new file mode 100644 index 000000000..eb2ad45ea --- /dev/null +++ b/ncgen/ncf199.cdl @@ -0,0 +1,11 @@ +netcdf ncf199 { +dimensions: + F1 = 3 ; + R1 = UNLIMITED ; +variables: + int fr(F1,R1); +data: +// This causes assertion violation: +// assertion failure: (dimindex < lastunlimited && (dimset->dimsyms[dimindex]->dim.isunlimited)) + fr = {1,2}, {3,4}, {5,6} ; +} diff --git a/ncgen/run_nc4_tests.sh b/ncgen/run_nc4_tests.sh index d712e4d70..703e84830 100755 --- a/ncgen/run_nc4_tests.sh +++ b/ncgen/run_nc4_tests.sh @@ -11,5 +11,8 @@ echo "*** creating netCDF-4 classic model file c0_4c.nc from c0.cdl..." echo "*** creating C code for CAM file ref_camrun.cdl..." ./ncgen -lc $srcdir/ref_camrun.cdl >ref_camrun.c +echo "*** test for jira NCF-199 bug" +./ncgen -k3 $srcdir/ncf199.cdl + echo "*** Test successful!" exit 0