source: git/Singular/mmstd.c @ f37467

spielwiese
Last change on this file since f37467 was 762407, checked in by Oleksandr Motsak <motsak@…>, 12 years ago
config.h is for sources files only FIX: config.h should only be used by source (not from inside kernel/mod2.h!) NOTE: each source file should better include mod2.h right after config.h, while headers should better not include mod2.h.
  • Property mode set to 100644
File size: 1.4 KB
Line 
1/****************************************
2*  Computer Algebra System SINGULAR     *
3****************************************/
4/* $Id$ */
5/*
6* ABSTRACT: standard version of C-memory management alloc func
7* i.e. (malloc/realloc/free)
8*/
9
10#include "config.h"
11#include <kernel/mod2.h>
12
13#include <omalloc/omalloc.h>
14
15#include "static.h"
16
17// we provide these functions, so that the settings of OM_CHECK
18// and OM_TRACK are used, but only provide them if omalloc is not based
19// on them
20// already provided in libomalloc
21#if !defined(OMALLOC_USES_MALLOC) && !defined(X_OMALLOC)
22
23/* in mmstd.c, for some architectures freeSize() unconditionally uses the *system* free() */
24/* sage ticket 5344: http://trac.sagemath.org/sage_trac/ticket/5344 */
25/* solution: correctly check OMALLOC_USES_MALLOC from omalloc.h, */
26/* do not rely on the default in Singular as libsingular may be different */
27
28// define this so that all addr allocated there are marked
29// as static, i.e. not metioned by omPrintUsedAddr
30#define OM_MALLOC_MARK_AS_STATIC
31#define strdup_ strdup__
32#include <omalloc/omalloc.c> /// UGLY!!!!!!!!!!!!!!!!
33
34#else
35#include <Singular/mmalloc.h>
36
37void freeSize(void* addr, size_t size)
38{
39  if (addr) free(addr);
40}
41
42void* reallocSize(void* old_addr, size_t old_size, size_t new_size)
43{
44  if (old_addr && new_size)
45  {
46   return realloc(old_addr, new_size);
47  }
48  else 
49  {
50    freeSize(old_addr, old_size);
51    return malloc(new_size);
52  }
53}
54
55#endif
56
Note: See TracBrowser for help on using the repository browser.