From d09c365e3c4c784196cbcf88641d781bf9084721 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Mon, 26 Mar 2018 17:15:16 +0200
Subject: [PATCH] Philippe 26/03/2018: IO: bug correction: deallocate IVDIMS
 only if allocated

---
 src/LIB/SURCOUCHE/src/mode_netcdf.f90 | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/LIB/SURCOUCHE/src/mode_netcdf.f90 b/src/LIB/SURCOUCHE/src/mode_netcdf.f90
index 38ac393a8..5df150185 100644
--- a/src/LIB/SURCOUCHE/src/mode_netcdf.f90
+++ b/src/LIB/SURCOUCHE/src/mode_netcdf.f90
@@ -1293,7 +1293,7 @@ CALL IO_WRITE_FIELD_ATTR_NC4(TPFILE,TPFIELD,IVARID,GEXISTED)
 STATUS = NF90_PUT_VAR(INCID, IVARID, PFIELD)
 IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_FIELD_NC4_X1[NF90_PUT_VAR] '//TRIM(TPFIELD%CMNHNAME),IRESP)
 
-DEALLOCATE(IVDIMS)
+IF(ALLOCATED(IVDIMS)) DEALLOCATE(IVDIMS)
 
 KRESP = IRESP
 END SUBROUTINE IO_WRITE_FIELD_NC4_X1
@@ -1384,7 +1384,7 @@ CALL IO_WRITE_FIELD_ATTR_NC4(TZFILE,TZFIELD,IVARID,GEXISTED,KSHAPE=INT(SHAPE(PFI
 STATUS = NF90_PUT_VAR(INCID, IVARID, PFIELD)
 IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_FIELD_NC4_X2[NF90_PUT_VAR] '//TRIM(TZFIELD%CMNHNAME),IRESP)
  
-DEALLOCATE(IVDIMS)
+IF(ALLOCATED(IVDIMS)) DEALLOCATE(IVDIMS)
 
 KRESP = IRESP
 END SUBROUTINE IO_WRITE_FIELD_NC4_X2
@@ -1451,7 +1451,7 @@ CALL IO_WRITE_FIELD_ATTR_NC4(TPFILE,TPFIELD,IVARID,GEXISTED,KSHAPE=INT(SHAPE(PFI
 STATUS = NF90_PUT_VAR(INCID, IVARID, PFIELD)
 IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_FIELD_NC4_X3[NF90_PUT_VAR] '//TRIM(TPFIELD%CMNHNAME),IRESP)
 
-DEALLOCATE(IVDIMS)
+IF(ALLOCATED(IVDIMS)) DEALLOCATE(IVDIMS)
 
 KRESP = IRESP
 END SUBROUTINE IO_WRITE_FIELD_NC4_X3
@@ -1518,7 +1518,7 @@ CALL IO_WRITE_FIELD_ATTR_NC4(TPFILE,TPFIELD,IVARID,GEXISTED,KSHAPE=INT(SHAPE(PFI
 STATUS = NF90_PUT_VAR(INCID, IVARID, PFIELD)
 IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_FIELD_NC4_X4[NF90_PUT_VAR] '//TRIM(TPFIELD%CMNHNAME),IRESP)
 
-DEALLOCATE(IVDIMS)
+IF(ALLOCATED(IVDIMS)) DEALLOCATE(IVDIMS)
 
 KRESP = IRESP
 END SUBROUTINE IO_WRITE_FIELD_NC4_X4
@@ -1585,7 +1585,7 @@ CALL IO_WRITE_FIELD_ATTR_NC4(TPFILE,TPFIELD,IVARID,GEXISTED,KSHAPE=INT(SHAPE(PFI
 STATUS = NF90_PUT_VAR(INCID, IVARID, PFIELD)
 IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_FIELD_NC4_X5[NF90_PUT_VAR] '//TRIM(TPFIELD%CMNHNAME),IRESP)
 
-DEALLOCATE(IVDIMS)
+IF(ALLOCATED(IVDIMS)) DEALLOCATE(IVDIMS)
 
 KRESP = IRESP
 END SUBROUTINE IO_WRITE_FIELD_NC4_X5
@@ -1652,7 +1652,7 @@ CALL IO_WRITE_FIELD_ATTR_NC4(TPFILE,TPFIELD,IVARID,GEXISTED,KSHAPE=INT(SHAPE(PFI
 STATUS = NF90_PUT_VAR(INCID, IVARID, PFIELD)
 IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_FIELD_NC4_X6[NF90_PUT_VAR] '//TRIM(TPFIELD%CMNHNAME),IRESP)
 
-DEALLOCATE(IVDIMS)
+IF(ALLOCATED(IVDIMS)) DEALLOCATE(IVDIMS)
 
 KRESP = IRESP
 END SUBROUTINE IO_WRITE_FIELD_NC4_X6
@@ -1805,7 +1805,7 @@ CALL IO_WRITE_FIELD_ATTR_NC4(TPFILE,TPFIELD,IVARID,GEXISTED)
 STATUS = NF90_PUT_VAR(INCID, IVARID, KFIELD)
 IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_FIELD_NC4_N1[NF90_PUT_VAR] '//TRIM(TPFIELD%CMNHNAME),IRESP)
 
-DEALLOCATE(IVDIMS)
+IF(ALLOCATED(IVDIMS)) DEALLOCATE(IVDIMS)
 
 KRESP = IRESP
 END SUBROUTINE IO_WRITE_FIELD_NC4_N1
@@ -1872,7 +1872,7 @@ CALL IO_WRITE_FIELD_ATTR_NC4(TPFILE,TPFIELD,IVARID,GEXISTED,KSHAPE=INT(SHAPE(KFI
 STATUS = NF90_PUT_VAR(INCID, IVARID, KFIELD)
 IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_FIELD_NC4_N2[NF90_PUT_VAR] '//TRIM(TPFIELD%CMNHNAME),IRESP)
 
-DEALLOCATE(IVDIMS)
+IF(ALLOCATED(IVDIMS)) DEALLOCATE(IVDIMS)
 
 KRESP = IRESP
 END SUBROUTINE IO_WRITE_FIELD_NC4_N2
@@ -1938,7 +1938,7 @@ CALL IO_WRITE_FIELD_ATTR_NC4(TPFILE,TPFIELD,IVARID,GEXISTED,KSHAPE=INT(SHAPE(KFI
 STATUS = NF90_PUT_VAR(INCID, IVARID, KFIELD)
 IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_FIELD_NC4_N3[NF90_PUT_VAR] '//TRIM(TPFIELD%CMNHNAME),IRESP)
 
-DEALLOCATE(IVDIMS)
+IF(ALLOCATED(IVDIMS)) DEALLOCATE(IVDIMS)
 
 KRESP = IRESP
 END SUBROUTINE IO_WRITE_FIELD_NC4_N3
@@ -2071,7 +2071,7 @@ CALL IO_WRITE_FIELD_ATTR_NC4(TPFILE,TPFIELD,IVARID,GEXISTED)
 STATUS = NF90_PUT_VAR(INCID, IVARID, IFIELD)
 IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_FIELD_NC4_L1[NF90_PUT_VAR] '//TRIM(TPFIELD%CMNHNAME),IRESP)
 
-DEALLOCATE(IVDIMS)
+IF(ALLOCATED(IVDIMS)) DEALLOCATE(IVDIMS)
 
 KRESP = IRESP
 END SUBROUTINE IO_WRITE_FIELD_NC4_L1
-- 
GitLab