diff --git a/avt/Database/Database/avtGenericDatabase.C b/avt/Database/Database/avtGenericDatabase.C index 45ee2f44c085c6cea55e08603d9188a33c93e569..f27f6a29ea70b14752c262fdee5b668361099547 100644 --- a/avt/Database/Database/avtGenericDatabase.C +++ b/avt/Database/Database/avtGenericDatabase.C @@ -3684,7 +3684,7 @@ avtGenericDatabase::MaterialSelect(vtkDataSet *ds, avtMaterial *mat, char msg[128]; SNPRINTF(msg,sizeof(msg),"In domain number %d, the material object " "with nzones=%d and dataset object with ncells=%d do not agree.", - dom, mat->GetNZones(), ds->GetNumberOfCells()); + dom, mat->GetNZones(), (int) ds->GetNumberOfCells()); EXCEPTION1(InvalidDBTypeException, msg); } diff --git a/common/utility/Namescheme.C b/common/utility/Namescheme.C index 43ca5cd60f178a15bb23275c55c8731cf6e249cd..4b26f0fc08fb551c56f4af2a84a7a5ebb25425d6 100644 --- a/common/utility/Namescheme.C +++ b/common/utility/Namescheme.C @@ -43,6 +43,7 @@ #include #include #include +#include #define FREE(M) if(M)free(M); @@ -365,9 +366,7 @@ Namescheme::Namescheme(const char *fmt, ...) return; // grab just the part of fmt that is the printf-style format string - this->fmt = (char *)calloc(n, sizeof(char)); - strncpy(this->fmt, &fmt[1], n-1); - + this->fmt = C_strndup(&fmt[1],n-1); this->fmtlen = n-1; // In 2 passes, count conversion specs. and then setup pointers to each diff --git a/common/utility/Utility.h b/common/utility/Utility.h index f639c507256bd022fd0dc68ab2674dca72875681..4117983ddf980e4ce7c3d8bd623a14457f5a86a8 100644 --- a/common/utility/Utility.h +++ b/common/utility/Utility.h @@ -88,6 +88,7 @@ bool UTILITY_API ConvertArgsToTunneledValues(const std::map&, bool UTILITY_API GetSSHClient(std::string &sshClient); inline char *C_strdup(char const * const); +inline char *C_strndup(char const * const, size_t); inline char *CXX_strdup(char const * const); inline char *CXX_strndup(char const * const, size_t); inline void InlineCopy(char *&, const char * const &, const int &); @@ -125,6 +126,15 @@ C_strdup(char const * const c) return p; } +inline char * +C_strndup(char const * const c, size_t n) +{ + size_t len = (strlen(c) < n) ? strlen(c) : n; + char *p = (char *) malloc(len+1); + memcpy(p, c, len); + p[len] = '\0'; + return p; +} // **************************************************************************** // Method: CXX_strdup diff --git a/databases/Exodus/avtExodusFileFormat.C b/databases/Exodus/avtExodusFileFormat.C index 9d480e9afb6bcfdbd56700c303d7cbbb1861f82c..d78ce8ab92e86b9efaa7d40735e1f74e5711daad 100644 --- a/databases/Exodus/avtExodusFileFormat.C +++ b/databases/Exodus/avtExodusFileFormat.C @@ -84,6 +84,7 @@ #include #include #include +#include #include #include @@ -202,11 +203,7 @@ static char **GetStringListFromExodusIINCvar(int exfid, char const *var_name) char *p; retval = (char**) malloc((nstrings + 1) * sizeof(char*)); for (i = 0, p = buf; i < nstrings; i++, p += len_string) - { - // retval[i] = strndup(p,len_string); - retval[i] = (char*) malloc((len_string + 1) * sizeof(char)); - strncpy( retval[i], p, len_string ); - } + retval[i] = C_strndup(p,len_string); retval[i] = 0; free(buf); @@ -250,9 +247,11 @@ static int SizeOfNCType(int type) case NC_INT: case NC_UINT: return sizeof(int); +#ifdef HAVE_VTK_SIZEOF___INT64 case NC_INT64: case NC_UINT64: return sizeof(int64_t); +#endif case NC_FLOAT: return sizeof(float); case NC_DOUBLE: @@ -851,7 +850,9 @@ GetElementBlockNamesAndIds(int ncExIIId, int numBlocks, switch (vtype) { case NC_INT: READ_BLOCK_IDS(ncExIIId, eb_blockid_varid, numBlocks, blockId, int); break; -// case NC_INT64: READ_BLOCK_IDS(ncExIIId, eb_blockid_varid, numBlocks, blockId, int64_t); break; +#ifdef HAVE_VTK_SIZEOF___INT64 + case NC_INT64: READ_BLOCK_IDS(ncExIIId, eb_blockid_varid, numBlocks, blockId, int64_t); break; +#endif } }