From aba655a3db3387dddde8aeb9faaa7b389f7364f2 Mon Sep 17 00:00:00 2001
From: Uwe Schulzweida <uwe.schulzweida@mpimet.mpg.de>
Date: Fri, 14 Mar 2025 17:52:23 +0100
Subject: [PATCH 1/5] enable-hirlam-extensions failed since release 2.5.1 (bug
 fix)

---
 ChangeLog       | 4 ++++
 src/grb_write.c | 4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index b1e9272c0..8ba6f4450 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2025-03-14  Uwe Schulzweida
+
+	* enable-hirlam-extensions failed since release 2.5.1 (bug fix)
+
 2025-03-05  Uwe Schulzweida
 
 	* Version 2.5.1 released
diff --git a/src/grb_write.c b/src/grb_write.c
index 217904313..7f699aac7 100644
--- a/src/grb_write.c
+++ b/src/grb_write.c
@@ -316,8 +316,8 @@ grbCopyField(stream_t *streamptr2, stream_t *streamptr1)
           size_t numMissVals = 0;
 
           int vlistID = streamptr1->vlistID;
-          int varID = record->varID;
-          int levelID = record->levelID;
+          int varID = recinfo->varID;
+          int levelID = recinfo->levelID;
           int gridID = vlistInqVarGrid(vlistID, varID);
 
           size_t gridsize = gridInqSize(gridID);
-- 
GitLab


From 6729bee6d0a040c99d0f6aac7d768b1adb5a81ee Mon Sep 17 00:00:00 2001
From: Uwe Schulzweida <uwe.schulzweida@mpimet.mpg.de>
Date: Fri, 14 Mar 2025 17:54:28 +0100
Subject: [PATCH 2/5] Set revision number to 2.5.2

---
 configure.ac | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 112aeb0f2..a6026ba7c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7,7 +7,7 @@
 AC_PREREQ([2.69])
 LT_PREREQ([2.4.6])
 
-AC_INIT([cdi],[2.5.1.1],[https://mpimet.mpg.de/cdi])
+AC_INIT([cdi],[2.5.2],[https://mpimet.mpg.de/cdi])
 AC_DEFINE_UNQUOTED(CDI, ["$PACKAGE_VERSION"], [CDI version])
 
 AC_CONFIG_AUX_DIR([config])
-- 
GitLab


From e391183c7570d093b09c8fec9eab55fe0fd65576 Mon Sep 17 00:00:00 2001
From: Uwe Schulzweida <uwe.schulzweida@mpimet.mpg.de>
Date: Mon, 24 Mar 2025 10:15:04 +0100
Subject: [PATCH 3/5] Check netCDF filter

---
 src/cdf_filter.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/cdf_filter.c b/src/cdf_filter.c
index 615208ca3..4c4cea080 100644
--- a/src/cdf_filter.c
+++ b/src/cdf_filter.c
@@ -94,8 +94,9 @@ cdf_def_var_filter(int ncid, int ncvarID, const char *filterSpec)
           for (size_t i = 0; i < nfilters; i++)
             {
               unsigned int filterid = filters[i]->filterid;
-              // printf("filter %zu id:%d nparams:%zu param1 %d %d\n", i + 1, filterid, filters[i]->nparams, filters[i]->params[0],
-              // filters[i]->params[1]);
+              // printf("filter %zu id:%d nparams:%zu param1 %d\n", i + 1, filterid, filters[i]->nparams, filters[i]->params[0]);
+              status = nc_inq_filter_avail(ncid, filterid);
+              if (status != NC_NOERR) Error("%s", nc_strerror(status));
               status = nc_def_var_filter(ncid, ncvarID, filterid, filters[i]->nparams, filters[i]->params);
               if (status != NC_NOERR)
                 {
-- 
GitLab


From 3b65d721f75aed9057376f2b271ebd129a49e909 Mon Sep 17 00:00:00 2001
From: Uwe Schulzweida <uwe.schulzweida@mpimet.mpg.de>
Date: Mon, 24 Mar 2025 10:36:10 +0100
Subject: [PATCH 4/5] Revert last commit

---
 src/cdf_filter.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/cdf_filter.c b/src/cdf_filter.c
index 4c4cea080..91773ffe7 100644
--- a/src/cdf_filter.c
+++ b/src/cdf_filter.c
@@ -95,8 +95,6 @@ cdf_def_var_filter(int ncid, int ncvarID, const char *filterSpec)
             {
               unsigned int filterid = filters[i]->filterid;
               // printf("filter %zu id:%d nparams:%zu param1 %d\n", i + 1, filterid, filters[i]->nparams, filters[i]->params[0]);
-              status = nc_inq_filter_avail(ncid, filterid);
-              if (status != NC_NOERR) Error("%s", nc_strerror(status));
               status = nc_def_var_filter(ncid, ncvarID, filterid, filters[i]->nparams, filters[i]->params);
               if (status != NC_NOERR)
                 {
-- 
GitLab


From 1549d6e7f8f506b9837e31d6ea3572516e5eda01 Mon Sep 17 00:00:00 2001
From: Uwe Schulzweida <uwe.schulzweida@mpimet.mpg.de>
Date: Thu, 27 Mar 2025 10:43:55 +0100
Subject: [PATCH 5/5] vlistChangeZaxis: added call to delete_chunks() (bug fix)

---
 ChangeLog   |  4 ++++
 src/vlist.c | 35 +++++++++++++++++++----------------
 2 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 8ba6f4450..b110284d9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2025-03-27  Uwe Schulzweida
+
+	* vlistChangeZaxis: added call to delete_chunks() (bug fix)
+
 2025-03-14  Uwe Schulzweida
 
 	* enable-hirlam-extensions failed since release 2.5.1 (bug fix)
diff --git a/src/vlist.c b/src/vlist.c
index a6bf4888e..998026b61 100644
--- a/src/vlist.c
+++ b/src/vlist.c
@@ -507,6 +507,22 @@ vlist_generate_zaxis(int vlistID, int zaxistype, int nlevels, const double *leve
   return zaxisID;
 }
 
+static void
+delete_chunks(int vlistID, int varID)
+{
+  int chunkKeys[4] = { CDI_KEY_CHUNKSIZE_DIMX, CDI_KEY_CHUNKSIZE_DIMY, CDI_KEY_CHUNKSIZE_DIMZ, CDI_KEY_CHUNKSIZE_DIMT };
+  for (int i = 0; i < 4; ++i)
+    {
+      int chunkSize = 0;
+      cdiInqKeyInt(vlistID, varID, chunkKeys[i], &chunkSize);
+      if (chunkSize != 0) cdiDeleteKey(vlistID, varID, chunkKeys[i]);
+    }
+
+  int chunkSize = 0;
+  cdiInqKeyInt(vlistID, varID, CDI_KEY_CHUNKSIZE, &chunkSize);
+  if (chunkSize > 0) cdiDeleteKey(vlistID, varID, CDI_KEY_CHUNKSIZE);
+}
+
 /*
 @Function  vlistCopyFlag
 @Title     Copy some entries of a variable list
@@ -708,6 +724,7 @@ vlistCopyFlag(int vlistID2, int vlistID1)
 
                 zaxisID = zaxisID2;
                 vars2[varID2].zaxisID = zaxisID2;
+                delete_chunks(vlistID2, varID2);
               }
 
             for (int levID = 0; levID < nlevs2; levID++)
@@ -1350,22 +1367,6 @@ vlistGridIndex(int vlistID, int gridID)
   return index;
 }
 
-static void
-delete_chunks(int vlistID, int varID)
-{
-  int chunkKeys[4] = { CDI_KEY_CHUNKSIZE_DIMX, CDI_KEY_CHUNKSIZE_DIMY, CDI_KEY_CHUNKSIZE_DIMZ, CDI_KEY_CHUNKSIZE_DIMT };
-  for (int i = 0; i < 4; ++i)
-    {
-      int chunkSize = 0;
-      cdiInqKeyInt(vlistID, varID, chunkKeys[i], &chunkSize);
-      if (chunkSize != 0) cdiDeleteKey(vlistID, varID, chunkKeys[i]);
-    }
-
-  int chunkSize = 0;
-  cdiInqKeyInt(vlistID, varID, CDI_KEY_CHUNKSIZE, &chunkSize);
-  if (chunkSize > 0) cdiDeleteKey(vlistID, varID, CDI_KEY_CHUNKSIZE);
-}
-
 void
 vlistChangeGridIndex(int vlistID, int index, int gridID)
 {
@@ -1457,6 +1458,7 @@ vlistChangeZaxisIndex(int vlistID, int index, int zaxisID)
         if (vlistptr->vars[varID].zaxisID == zaxisIDold)
           {
             vlistptr->vars[varID].zaxisID = zaxisID;
+            delete_chunks(vlistID, varID);
             if (vlistptr->vars[varID].levinfo && nlevs != nlevsOld)
               {
                 vlistptr->vars[varID].levinfo
@@ -1490,6 +1492,7 @@ vlistChangeZaxis(int vlistID, int zaxisID1, int zaxisID2)
     if (vlistptr->vars[varID].zaxisID == zaxisID1)
       {
         vlistptr->vars[varID].zaxisID = zaxisID2;
+        delete_chunks(vlistID, varID);
 
         if (vlistptr->vars[varID].levinfo && nlevs2 != nlevs1)
           {
-- 
GitLab