diff --git a/src/cdf_write.c b/src/cdf_write.c index 0c9d7a377f5343e189fa13f1decb91859b8cecc1..57941b309fdf61e9375a60eac271ac772caadbd9 100644 --- a/src/cdf_write.c +++ b/src/cdf_write.c @@ -276,7 +276,6 @@ void cdfDefineAttributes(int cdiID, int varID, int fileID, int ncvarID) { int atttype, attlen; - size_t len; char attname[CDI_MAX_NAME + 1]; void *attBuf = NULL; size_t attBufSize = 0; @@ -288,23 +287,24 @@ cdfDefineAttributes(int cdiID, int varID, int fileID, int ncvarID) { cdiInqAtt(cdiID, varID, iatt, attname, &atttype, &attlen); - if (attlen == 0) continue; + //if (attlen == 0) continue; if (atttype == CDI_DATATYPE_TXT) { const size_t attSize = (size_t) attlen * sizeof(char); char *atttxt = (char *) resizeBuf(&attBuf, &attBufSize, attSize); cdiInqAttTxt(cdiID, varID, attname, attlen, atttxt); - len = (size_t) attlen; + size_t len = (size_t) attlen; cdf_put_att_text(fileID, ncvarID, attname, len, atttxt); } else if (atttype == CDI_DATATYPE_INT8 || atttype == CDI_DATATYPE_UINT8 || atttype == CDI_DATATYPE_INT16 || atttype == CDI_DATATYPE_UINT16 || atttype == CDI_DATATYPE_INT32 || atttype == CDI_DATATYPE_UINT32) { + if (attlen == 0) continue; const size_t attSize = (size_t) attlen * sizeof(int); int *attint = (int *) resizeBuf(&attBuf, &attBufSize, attSize); cdiInqAttInt(cdiID, varID, attname, attlen, &attint[0]); - len = (size_t) attlen; + size_t len = (size_t) attlen; // clang-format off nc_type xtype = (atttype == CDI_DATATYPE_INT8) ? NC_BYTE : (atttype == CDI_DATATYPE_INT16) ? NC_SHORT : @@ -319,10 +319,11 @@ cdfDefineAttributes(int cdiID, int varID, int fileID, int ncvarID) } else if (atttype == CDI_DATATYPE_FLT32 || atttype == CDI_DATATYPE_FLT64) { + if (attlen == 0) continue; const size_t attSize = (size_t) attlen * sizeof(double); double *attflt = (double *) resizeBuf(&attBuf, &attBufSize, attSize); cdiInqAttFlt(cdiID, varID, attname, attlen, attflt); - len = (size_t) attlen; + size_t len = (size_t) attlen; if (atttype == CDI_DATATYPE_FLT32) { float attflt_sp[8]; diff --git a/src/stream_cdf_i.c b/src/stream_cdf_i.c index 047d761f80d07bc5cc2ed76e30facd8877397135..340ef1fbb4a7013558ee86d48575d01968e8898a 100644 --- a/src/stream_cdf_i.c +++ b/src/stream_cdf_i.c @@ -3715,6 +3715,10 @@ cdf_scan_global_attr(int fileID, int vlistID, int ngatts, int *instID, int *mode cdiDefAttTxt(vlistID, CDI_GLOBAL, attname, (int) attstrlen, attstring); } } + else + { + cdiDefAttTxt(vlistID, CDI_GLOBAL, attname, (int) attstrlen, attstring); + } } else if (xtype == NC_SHORT || xtype == NC_INT) {