diff --git a/cf b/cf index 60db61277..fb93c5c46 100644 --- a/cf +++ b/cf @@ -24,6 +24,7 @@ CFLAGS="" FORCE="-i" #INSTALL=1 +#PREFIX=/usr/local PREFIX=/usr/local if test "x$cmds" = x ; then @@ -170,7 +171,7 @@ FLAGS="$FLAGS --enable-dap-auth-tests" #valgrind => not shared #FLAGS="$FLAGS --enable-valgrind-tests" -FLAGS="$FLAGS --disable-shared" +#FLAGS="$FLAGS --disable-shared" #FLAGS="$FLAGS --enable-shared" if test "x$HDF5" = "x" ; then diff --git a/libsrc/putget.c b/libsrc/putget.c index 39afcfc43..3add44aaf 100644 --- a/libsrc/putget.c +++ b/libsrc/putget.c @@ -5147,7 +5147,7 @@ NC3_get_vara(int ncid, int varid, /* If this is a record variable, then we have to substitute the number of records into dimension 0. */ if(varp->shape[0] == 0) { - memcpy((void*)modedges,(void*)varp->shape, + (void*)memcpy((void*)modedges,(void*)varp->shape, sizeof(size_t)*varp->ndims); modedges[0] = NC_get_numrecs(nc3); edges = modedges; @@ -5280,7 +5280,7 @@ NC3_put_vara(int ncid, int varid, /* If this is a record variable, then we have to substitute the number of records into dimension 0. */ if(varp->shape[0] == 0) { - memcpy((void*)modedges,(void*)varp->shape, + (void*)memcpy((void*)modedges,(void*)varp->shape, sizeof(size_t)*varp->ndims); modedges[0] = NC_get_numrecs(nc3); edges = modedges; diff --git a/ncdump/utils.c b/ncdump/utils.c index 325cd4f27..3a8e75a09 100644 --- a/ncdump/utils.c +++ b/ncdump/utils.c @@ -156,16 +156,17 @@ nc_inq_dimid2(int ncid, const char *dimname, int *dimidp) { } #ifdef USE_NETCDF4 else { /* Parse group name out and get dimid using that */ - size_t grp_namelen = sp - dimname; - char *grpname = emalloc(grp_namelen + 1); - int grpid; - strncpy(grpname, dimname, grp_namelen); - grpname[grp_namelen] = '\0'; - ret = nc_inq_grp_full_ncid(ncid, grpname, &grpid); - if(ret == NC_NOERR) { - ret = nc_inq_dimid(grpid, dimname, dimidp); - } - free(grpname); + size_t grp_namelen = sp - dimname; + char *grpname = emalloc(grp_namelen+1); + + int grpid; + strncpy(grpname, dimname, grp_namelen+1); + grpname[grp_namelen] = '\0'; + ret = nc_inq_grp_full_ncid(ncid, grpname, &grpid); + if(ret == NC_NOERR) { + ret = nc_inq_dimid(grpid, dimname, dimidp); + } + free(grpname); } #endif /* USE_NETCDF4 */ return ret; diff --git a/ncgen3/load.c b/ncgen3/load.c index f99c866af..f47a2588f 100644 --- a/ncgen3/load.c +++ b/ncgen3/load.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include "generic.h" #include "ncgen.h" @@ -60,12 +61,12 @@ gen_load_c( ) { int idim, ival; - char *val_string; - char *charvalp; - short *shortvalp; - int *intvalp; - float *floatvalp; - double *doublevalp; + char *val_string = NULL; + char *charvalp = NULL; + short *shortvalp = NULL; + int *intvalp = NULL; + float *floatvalp = NULL; + double *doublevalp = NULL; char stmnt[C_MAX_STMNT]; size_t stmnt_len; char s2[C_MAX_STMNT] = {'\0'}; @@ -123,21 +124,26 @@ gen_load_c( for (ival = 0; ival < var_len-1; ival++) { switch (vars[varnum].type) { case NC_BYTE: - sprintf(s2, "%d, ", *charvalp++); + assert(charvalp != NULL); + sprintf(s2, "%d, ", *charvalp++); break; case NC_SHORT: - sprintf(s2, "%d, ", *shortvalp++); + assert(shortvalp != NULL); + sprintf(s2, "%d, ", *shortvalp++); break; case NC_INT: - sprintf(s2, "%ld, ", (long)*intvalp++); + assert(intvalp != NULL); + sprintf(s2, "%ld, ", (long)*intvalp++); break; case NC_FLOAT: - sprintf(s2, "%.8g, ", *floatvalp++); + assert(floatvalp != NULL); + sprintf(s2, "%.8g, ", *floatvalp++); break; case NC_DOUBLE: - sprintf(s2, "%#.16g", *doublevalp++); - tztrim(s2); - strcat(s2, ", "); + assert(doublevalp != NULL); + sprintf(s2, "%#.16g", *doublevalp++); + tztrim(s2); + strcat(s2, ", "); break; default: break; } @@ -151,33 +157,38 @@ gen_load_c( } } for (;ival < var_len; ival++) { - switch (vars[varnum].type) { - case NC_BYTE: - sprintf(s2, "%d", *charvalp); - break; - case NC_SHORT: - sprintf(s2, "%d", *shortvalp); - break; - case NC_INT: - sprintf(s2, "%ld", (long)*intvalp); - break; - case NC_FLOAT: - sprintf(s2, "%.8g", *floatvalp); - break; - case NC_DOUBLE: - sprintf(s2, "%#.16g", *doublevalp++); - tztrim(s2); - break; - default: break; - } - stmnt_len += strlen(s2); - if (stmnt_len < C_MAX_STMNT) - strcat(stmnt, s2); - else { - cline(stmnt); - strcpy(stmnt,s2); - stmnt_len = strlen(stmnt); - } + switch (vars[varnum].type) { + case NC_BYTE: + assert(charvalp != NULL); + sprintf(s2, "%d", *charvalp); + break; + case NC_SHORT: + assert(shortvalp != NULL); + sprintf(s2, "%d", *shortvalp); + break; + case NC_INT: + assert(intvalp != NULL); + sprintf(s2, "%ld", (long)*intvalp); + break; + case NC_FLOAT: + assert(floatvalp != NULL); + sprintf(s2, "%.8g", *floatvalp); + break; + case NC_DOUBLE: + assert(doublevalp != NULL); + sprintf(s2, "%#.16g", *doublevalp++); + tztrim(s2); + break; + default: break; + } + stmnt_len += strlen(s2); + if (stmnt_len < C_MAX_STMNT) + strcat(stmnt, s2); + else { + cline(stmnt); + strcpy(stmnt,s2); + stmnt_len = strlen(stmnt); + } } break; } @@ -289,15 +300,17 @@ fstrcat( size_t *slenp /* pointer to length of source string */ ) { - *slenp += strlen(t); - if (*slenp >= FORT_MAX_STMNT) { - derror("FORTRAN statement too long: %s",s); - fline(s); - strcpy(s, t); - *slenp = strlen(s); - } else { - strcat(s, t); - } + + *slenp += strlen(t); + + if (*slenp >= FORT_MAX_STMNT) { + derror("FORTRAN statement too long: %s",s); + fline(s); + strncpy(s, t, FORT_MAX_STMNT); + *slenp = strlen(s); + } else { + strncat(s, t, strlen(t)); + } } /* diff --git a/wjna b/wjna new file mode 100644 index 000000000..d315622eb --- /dev/null +++ b/wjna @@ -0,0 +1,53 @@ +#!/bin/bash + +JNADIR="c:/Users/dmh/opt/jna" + +PREFIX="${JNADIR}" + +# CMAKE Prefix Path +CPP="${JNADIR}" + +CMP="${CPP}/deps/shared/share/cmake" + +INCLUDES="${JNADIR}/deps/shared/include" + +FLAGS="" + +# Why does this not work? +#FLAGS="-DHDF5_LIBRARY=${CPP} ${FLAGS}" +#FLAGS="-DHDF5_INCLUDE_DIR=${INCLUDES} ${FLAGS}" + +# But this does +#CPP="${CPP};${CMP}" + +FLAGS="-DCMAKE_INSTALL_PREFIX=${PREFIX} ${FLAGS}" +#FLAGS="-DCMAKE_PREFIX_PATH=${CPP} ${FLAGS}" + +FLAGS="-DHDF5_LIB=${CPP}/hdf5.dll ${FLAGS}" +FLAGS="-DHDF5_HL_LIB=${CPP}/hdf5_hl.dll ${FLAGS}" +FLAGS="-DHDF5_INCLUDE_DIR=${INCLUDES} ${FLAGS}" + +FLAGS="-DZLIB_LIBRARY=${CPP}/zlib.dll ${FLAGS}" +FLAGS="-DZLIB_INCLUDE_DIR=${INCLUDES} ${FLAGS}" + +FLAGS="-DCURL_LIBRARY=${CPP}/libcurl.dll ${FLAGS}" +FLAGS="-DCURL_INCLUDE_DIR=${INCLUDES} ${FLAGS}" + +FLAGS="-ENABLE_CONVERSION_WARNINGS=OFF ${FLAGS}" +FLAGS="-DBUILD_UTILITIES=OFF ${FLAGS}" +FLAGS="-DENABLE_EXAMPLES=OFF ${FLAGS}" +FLAGS="-BUILD_V2=OFF ${FLAGS}" + +rm -fr ./build +mkdir build +pushd build +cmake -G"Visual Studio 10" ${FLAGS} .. +cmake --build . --config Release +popd + +exit + +# heap +#FLAGS="-DHDF5_LIBRARY=${CPP} ${FLAGS}" +#FLAGS="-DHDF5_INCLUDE_DIRS=/usr/local/include ${FLAGS}" +#CPP="${JNADIR}/deps/shared/share/cmake"