mirror of
https://github.com/Unidata/netcdf-c.git
synced 2025-01-06 15:34:44 +08:00
245961de00
https://github.com/Unidata/netcdf-c/issues/1168 https://github.com/Unidata/netcdf-c/issues/1163 https://github.com/Unidata/netcdf-c/issues/1162 This PR partially fixes memory leaks in the netcdf-c library, in the ncdump utility, and in some test cases. The netcdf-c library now runs memory clean with the assumption that the --disable-utilities option is used. The primary remaining problem is ncgen. Once that is fixed, I believe the netcdf-c library will run memory clean with no limitations. Notes ----------- 1. Memory checking was performed using gcc -fsanitize=address. Valgrind-based testing has yet to be performed. 2. The pnetcdf, hdf4, and examples code has not been tested. Misc. Non-leak changes 1. Make tst_diskless2 only run when netcdf4 is enabled (issue 1162) 2. Fix CmakeLists.txt to turn off logging if ENABLE_NETCDF_4 is OFF 3. Isolated all my debug scripts into a single top-level directory called debug 4. Fix some USE_NETCDF4 dependencies in nc_test and nc_test4 Makefile.am
63 lines
1.2 KiB
C
63 lines
1.2 KiB
C
#include "config.h"
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include "netcdf.h"
|
|
#include "nctestserver.h"
|
|
|
|
#define FURL "%s"
|
|
static char url[4096];
|
|
|
|
#ifdef DEBUG
|
|
static void
|
|
CHECK(int e, const char* msg)
|
|
{
|
|
if(e == NC_NOERR) return;
|
|
if(msg == NULL) msg = "Error";
|
|
printf("%s: %s\n", msg, nc_strerror(e));
|
|
exit(1);
|
|
}
|
|
#endif
|
|
|
|
static void
|
|
XFAIL(int e, const char* msg)
|
|
{
|
|
if(e == NC_NOERR) return;
|
|
if(msg == NULL) msg = "XFAIL";
|
|
printf("%s: %s\n", msg, nc_strerror(e));
|
|
}
|
|
|
|
int
|
|
main()
|
|
{
|
|
int ncid,retval;
|
|
char* serverlist = NULL;
|
|
char* svcurl = NULL;
|
|
const char* servlet = "dts";
|
|
|
|
#ifdef REMOTETESTSERVERS
|
|
serverlist = strdup(REMOTETESTSERVERS);
|
|
#endif
|
|
|
|
if(serverlist == NULL || strlen(serverlist) == 0) {
|
|
fprintf(stderr,"Cannot determine a server list");
|
|
exit(1);
|
|
}
|
|
svcurl = nc_findtestserver(servlet,0,serverlist);
|
|
if(svcurl == NULL) {
|
|
fprintf(stderr,"not found: %s\n",servlet);
|
|
exit(1);
|
|
}
|
|
|
|
snprintf(url,sizeof(url),FURL,svcurl);
|
|
|
|
printf("Testing: Misc. Tests url=|%s|\n",url);
|
|
retval = nc_open(url, 0, &ncid);
|
|
XFAIL(retval,"*** XFail : No trailing slash in url");
|
|
retval = nc_close(ncid);
|
|
/* cleanup */
|
|
free(serverlist);
|
|
free(svcurl);
|
|
return 0;
|
|
}
|