Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
mpim-sw
libcdi
Commits
b16f42e4
Commit
b16f42e4
authored
Apr 21, 2015
by
Uwe Schulzweida
Browse files
dmemory.c: merge changes from branches/cdi-tilesAndFileDrivenInput
parent
723bb896
Changes
2
Hide whitespace changes
Inline
Side-by-side
ChangeLog
View file @
b16f42e4
...
...
@@ -2,6 +2,10 @@
* Version 1.6.9 released
2015-04-21 Uwe Schulzweida
* dmemory.c: merge changes from branches/cdi-tilesAndFileDrivenInput
2015-03-30 Uwe Schulzweida
* gribapiDefLevel: use function grib2DefLevel() to write grib2 levels
...
...
src/dmemory.c
View file @
b16f42e4
#if defined
(HAVE_CONFIG_H)
#if defined(HAVE_CONFIG_H)
# include "config.h"
#endif
...
...
@@ -11,18 +11,24 @@
#include
"error.h"
#if ! defined (HAVE_CONFIG_H)
#if ! defined (HAVE_MALLOC_H)
# if defined (SX)
# define HAVE_MALLOC_H
# endif
#endif
#if !defined(HAVE_CONFIG_H) && !defined(HAVE_MALLOC_H) && defined(SX)
# define HAVE_MALLOC_H
#endif
#if defined
(HAVE_MALLOC_H)
#
include <malloc.h>
#if defined(HAVE_MALLOC_H)
# include <malloc.h>
#endif
//There is no point in avoiding to include our own header, it is likely to be included before this file in the backed cdilib.c.
//As such, we may as well always include it and let the compiler check our function signatures.
#include
"dmemory.h"
//However, we need to avoid clobbering our own `malloc()` calls, so we ensure that our own malloc calls cannot be interpreted as macro calls.
#define protected_realloc (realloc)
#define protected_calloc (calloc)
#define protected_malloc (malloc)
#define protected_free (free)
#define MALLOC_FUNC 0
#define CALLOC_FUNC 1
...
...
@@ -269,7 +275,7 @@ int memListNewEntry(int mtype, void *ptr, size_t size, size_t nobj,
{
memTableSize
=
8
;
memSize
=
memTableSize
*
sizeof
(
MemTable_t
);
memTable
=
(
MemTable_t
*
)
malloc
(
memSize
);
memTable
=
(
MemTable_t
*
)
protected_
malloc
(
memSize
);
if
(
memTable
==
NULL
)
memError
(
__func__
,
__FILE__
,
__LINE__
,
memSize
);
for
(
size_t
i
=
0
;
i
<
memTableSize
;
i
++
)
...
...
@@ -290,7 +296,7 @@ int memListNewEntry(int mtype, void *ptr, size_t size, size_t nobj,
{
memTableSize
=
2
*
memTableSize
;
memSize
=
memTableSize
*
sizeof
(
MemTable_t
);
memTable
=
(
MemTable_t
*
)
realloc
(
memTable
,
memSize
);
memTable
=
(
MemTable_t
*
)
protected_
realloc
(
memTable
,
memSize
);
if
(
memTable
==
NULL
)
memError
(
__func__
,
__FILE__
,
__LINE__
,
memSize
);
for
(
size_t
i
=
memID
;
i
<
memTableSize
;
i
++
)
...
...
@@ -414,7 +420,7 @@ void *Calloc(const char *caller, const char *file, int line, size_t nobjs, size_
if
(
nobjs
*
size
>
0
)
{
ptr
=
calloc
(
nobjs
,
size
);
ptr
=
protected_
calloc
(
nobjs
,
size
);
if
(
MEM_Debug
)
{
...
...
@@ -444,7 +450,7 @@ void *Malloc(const char *caller, const char *file, int line, size_t size)
if
(
size
>
0
)
{
ptr
=
malloc
(
size
);
ptr
=
protected_
malloc
(
size
);
if
(
MEM_Debug
)
{
...
...
@@ -474,7 +480,7 @@ void *Realloc(const char *caller, const char *file, int line, void *ptrold, size
if
(
size
>
0
)
{
ptr
=
realloc
(
ptrold
,
size
);
ptr
=
protected_
realloc
(
ptrold
,
size
);
if
(
MEM_Debug
)
{
...
...
@@ -521,36 +527,33 @@ void Free(const char *caller, const char *file, int line, void *ptr)
}
}
free
(
ptr
);
protected_
free
(
ptr
);
}
void
*
cdiXmalloc
(
size_t
size
,
const
char
*
filename
,
const
char
*
functionname
,
int
line
)
{
void
*
value
=
malloc
(
size
);
void
*
value
=
protected_
malloc
(
size
);
if
(
size
==
0
||
value
!=
NULL
)
;
else
cdiAbort
(
filename
,
functionname
,
line
,
"malloc failed: %s"
,
strerror
(
errno
));
cdiAbort
(
filename
,
functionname
,
line
,
"malloc failed: %s"
,
strerror
(
errno
));
return
value
;
}
void
*
cdiXcalloc
(
size_t
nmemb
,
size_t
size
,
const
char
*
filename
,
const
char
*
functionname
,
int
line
)
{
void
*
value
=
calloc
(
nmemb
,
size
);
void
*
value
=
protected_
calloc
(
nmemb
,
size
);
if
(
size
==
0
||
value
!=
NULL
)
;
else
cdiAbort
(
filename
,
functionname
,
line
,
"calloc failed: %s"
,
strerror
(
errno
)
);
cdiAbort
(
filename
,
functionname
,
line
,
"calloc failed: %s"
,
strerror
(
errno
)
);
return
value
;
}
void
*
cdiXrealloc
(
void
*
p
,
size_t
size
,
const
char
*
functionname
,
const
char
*
filename
,
int
line
)
{
void
*
value
=
realloc
(
p
,
size
);
void
*
value
=
protected_
realloc
(
p
,
size
);
if
(
size
==
0
||
value
!=
NULL
)
;
else
cdiAbort
(
filename
,
functionname
,
line
,
"realloc failed: %s"
,
strerror
(
errno
));
cdiAbort
(
filename
,
functionname
,
line
,
"realloc failed: %s"
,
strerror
(
errno
));
return
value
;
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment