Skip to content
Snippets Groups Projects
Commit 8a6740c4 authored by Thomas Jahns's avatar Thomas Jahns :cartwheel:
Browse files

Check that variables can be processed by YAXT.

parent 0aa86097
No related merge requests found
......@@ -3,6 +3,7 @@
#endif
#include <ctype.h>
#include <errno.h>
#include <yaxt.h>
......@@ -89,9 +90,33 @@ cdiPioClientStreamOpen(const char *filename, char filemode,
return fileID;
}
static void
checkVlistForPIO(int vlistID)
{
int nVars = vlistNvars(vlistID);
int varShape[3];
for (int varID = 0; varID < nVars; ++varID)
{
cdiPioQueryVarDims(varShape, vlistID, varID);
intmax_t size = 1;
for (size_t i = 0; i < 3; ++i)
size *= varShape[i];
if (size > XT_INT_MAX)
{
errno = EOVERFLOW;
SysError("CDI Variable too large for YAXT,"
" use configure with larger index type\n"
"vlistID=%d, varID=%d, variable size=%zu",
vlistID, varID, (size_t)size);
}
}
}
static void
cdiPioClientStreamDefVlist_(int streamID, int vlistID)
{
checkVlistForPIO(vlistID);
cdiStreamDefVlist_(streamID, vlistID);
int clientRank = commInqRankModel(),
numClients = cdiPioCommInqSizeClients(),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment