1/*********************************************************************
2 *   Copyright 2009, UCAR/Unidata
3 *   See netcdf/COPYRIGHT file for copying and redistribution conditions.
4 *********************************************************************/
5/* $Id: debug.c,v 1.2 2010/05/24 19:59:57 dmh Exp $ */
6/* $Header: /upc/share/CVS/netcdf-3/ncgen/debug.c,v 1.2 2010/05/24 19:59:57 dmh Exp $ */
7
8#include "includes.h"
9
10extern char* ncclassname(nc_class);
11
12#ifdef DEBUG
13int debug = 1;
14#else
15int debug = 0;
16#endif
17
18void fdebug(const char *fmt, ...)
19{
20    va_list argv;
21    if(debug == 0) return;
22    va_start(argv,fmt);
23    (void)vfprintf(stderr,fmt,argv) ;
24}
25
26/**************************************************/
27
28/* Support debugging of memory*/
29/* Also guarantee that calloc zeros memory*/
30void*
31chkcalloc(size_t size, size_t nelems)
32{
33    return chkmalloc(size*nelems);
34}
35
36void*
37chkmalloc(size_t size)
38{
39    void* memory = calloc(size,1); /* use calloc to zero memory*/
40    if(memory == NULL) {
41 panic("malloc:out of memory");
42    }
43    memset(memory,0,size);
44    return memory;
45}
46
47void*
48chkrealloc(void* ptr, size_t size)
49{
50    void* memory = realloc(ptr,size);
51    if(memory == NULL) {
52 panic("realloc:out of memory");
53    }
54    return memory;
55}
56
57void
58chkfree(void* mem)
59{
60    if(mem != NULL) free(mem);
61}
62
63int
64panic(const char* fmt, ...)
65{
66    va_list args;
67    if(fmt != NULL) {
68      va_start(argsfmt);
69      vfprintf(stderrfmtargs);
70      fprintf(stderr, "\n" );
71      va_end( args );
72    } else {
73      fprintf(stderr, "panic" );
74    }
75    fprintf(stderr, "\n" );
76    fflush(stderr);
77    abort();
78    return 0;
79}


HyperKWIC - Version 7.20DA executed at 11:37 on 27 Oct 2017 | Polyhedron Solutions - INTERNAL USE | COMMERCIAL (Any O/S) SN 4AKIed