~ubuntu-branches/ubuntu/vivid/ghostscript/vivid-security

« back to all changes in this revision

Viewing changes to openjpeg/libopenjpeg/opj_malloc.h

  • Committer: Package Import Robot
  • Author(s): Till Kamppeter
  • Date: 2013-08-28 18:05:40 UTC
  • mfrom: (1.1.41)
  • Revision ID: package-import@ubuntu.com-20130828180540-372a9b9b1wuesdwi
Tags: 9.10~dfsg~rc1-0ubuntu1
* New upstream release
   - Ghostscript 9.10rc1.
   - Upstream: Mainly, changes to our Postscript startup code (to improve
     compatibility with Adobe) have had unexpected and undesirable side
     effects. Most of these have been in fairly widely relied upon, but also
     decidedly non-standard uses (pdf2dsc being a prime example).
   - We are using Ghostscript's libopenjpeg again, using the system's one
     does not (yet) work as there are still patches of the Ghostscript
     developers which did not get accepted upstream yet..
* debian/control: Removed build dependency on libopenjpeg-dev.
* debian/rules: Removed check for removed openjpeg/ subdirectory in the
  repackaging check again, also set build options for using Ghostscript's
  built-in libopenjpeg library.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (c) 2005, Herve Drolon, FreeImage Team
 
3
 * Copyright (c) 2007, Callum Lerwick <seg@haxxed.com>
 
4
 * All rights reserved.
 
5
 *
 
6
 * Redistribution and use in source and binary forms, with or without
 
7
 * modification, are permitted provided that the following conditions
 
8
 * are met:
 
9
 * 1. Redistributions of source code must retain the above copyright
 
10
 *    notice, this list of conditions and the following disclaimer.
 
11
 * 2. Redistributions in binary form must reproduce the above copyright
 
12
 *    notice, this list of conditions and the following disclaimer in the
 
13
 *    documentation and/or other materials provided with the distribution.
 
14
 *
 
15
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
 
16
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
17
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
18
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 
19
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 
20
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 
21
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 
22
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 
23
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 
24
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 
25
 * POSSIBILITY OF SUCH DAMAGE.
 
26
 */
 
27
#ifndef __OPJ_MALLOC_H
 
28
#define __OPJ_MALLOC_H
 
29
/**
 
30
@file opj_malloc.h
 
31
@brief Internal functions
 
32
 
 
33
The functions in opj_malloc.h are internal utilities used for memory management.
 
34
*/
 
35
 
 
36
/** @defgroup MISC MISC - Miscellaneous internal functions */
 
37
/*@{*/
 
38
 
 
39
/** @name Exported functions */
 
40
/*@{*/
 
41
/* ----------------------------------------------------------------------- */
 
42
 
 
43
/**
 
44
Allocate an uninitialized memory block
 
45
@param size Bytes to allocate
 
46
@return Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
 
47
*/
 
48
#ifdef ALLOC_PERF_OPT
 
49
void * OPJ_CALLCONV opj_malloc(size_t size);
 
50
#else
 
51
#define opj_malloc(size) malloc(size)
 
52
#endif
 
53
 
 
54
/**
 
55
Allocate a memory block with elements initialized to 0
 
56
@param num Blocks to allocate
 
57
@param size Bytes per block to allocate
 
58
@return Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
 
59
*/
 
60
#ifdef ALLOC_PERF_OPT
 
61
void * OPJ_CALLCONV opj_calloc(size_t _NumOfElements, size_t _SizeOfElements);
 
62
#else
 
63
#define opj_calloc(num, size) calloc(num, size)
 
64
#endif
 
65
 
 
66
/**
 
67
Allocate memory aligned to a 16 byte boundry
 
68
@param size Bytes to allocate
 
69
@return Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
 
70
*/
 
71
/* FIXME: These should be set with cmake tests, but we're currently not requiring use of cmake */
 
72
#ifdef _WIN32
 
73
        /* Someone should tell the mingw people that their malloc.h ought to provide _mm_malloc() */
 
74
        #ifdef __GNUC__
 
75
                #include <mm_malloc.h>
 
76
                #define HAVE_MM_MALLOC
 
77
        #else /* MSVC, Intel C++ */
 
78
                #include <malloc.h>
 
79
                #ifdef _mm_malloc
 
80
                        #define HAVE_MM_MALLOC
 
81
                #endif
 
82
        #endif
 
83
#else /* Not _WIN32 */
 
84
        #if defined(__sun)
 
85
                #define HAVE_MEMALIGN
 
86
        /* Linux x86_64 and OSX always align allocations to 16 bytes */
 
87
        #elif !defined(__amd64__) && !defined(__APPLE__) && !defined(_AIX) && !defined(__FreeBSD__)
 
88
                #define HAVE_MEMALIGN
 
89
                #include <malloc.h>                     
 
90
        #endif
 
91
#endif
 
92
 
 
93
#define opj_aligned_malloc(size) malloc(size)
 
94
#define opj_aligned_free(m) free(m)
 
95
 
 
96
#ifdef HAVE_MM_MALLOC
 
97
        #undef opj_aligned_malloc
 
98
        #define opj_aligned_malloc(size) _mm_malloc(size, 16)
 
99
        #undef opj_aligned_free
 
100
        #define opj_aligned_free(m) _mm_free(m)
 
101
#endif
 
102
 
 
103
#ifdef HAVE_MEMALIGN
 
104
        extern void* memalign(size_t, size_t);
 
105
        #undef opj_aligned_malloc
 
106
        #define opj_aligned_malloc(size) memalign(16, (size))
 
107
        #undef opj_aligned_free
 
108
        #define opj_aligned_free(m) free(m)
 
109
#endif
 
110
 
 
111
#ifdef HAVE_POSIX_MEMALIGN
 
112
        #undef opj_aligned_malloc
 
113
        extern int posix_memalign(void**, size_t, size_t);
 
114
 
 
115
        static INLINE void* __attribute__ ((malloc)) opj_aligned_malloc(size_t size){
 
116
                void* mem = NULL;
 
117
                posix_memalign(&mem, 16, size);
 
118
                return mem;
 
119
        }
 
120
        #undef opj_aligned_free
 
121
        #define opj_aligned_free(m) free(m)
 
122
#endif
 
123
 
 
124
#ifdef ALLOC_PERF_OPT
 
125
        #undef opj_aligned_malloc
 
126
        #define opj_aligned_malloc(size) opj_malloc(size)
 
127
        #undef opj_aligned_free
 
128
        #define opj_aligned_free(m) opj_free(m)
 
129
#endif
 
130
 
 
131
/**
 
132
Reallocate memory blocks.
 
133
@param m Pointer to previously allocated memory block
 
134
@param s New size in bytes
 
135
@return Returns a void pointer to the reallocated (and possibly moved) memory block
 
136
*/
 
137
#ifdef ALLOC_PERF_OPT
 
138
void * OPJ_CALLCONV opj_realloc(void * m, size_t s);
 
139
#else
 
140
#define opj_realloc(m, s) realloc(m, s)
 
141
#endif
 
142
 
 
143
/**
 
144
Deallocates or frees a memory block.
 
145
@param m Previously allocated memory block to be freed
 
146
*/
 
147
#ifdef ALLOC_PERF_OPT
 
148
void OPJ_CALLCONV opj_free(void * m);
 
149
#else
 
150
#define opj_free(m) free(m)
 
151
#endif
 
152
 
 
153
#ifdef __GNUC__
 
154
#pragma GCC poison malloc calloc realloc free
 
155
#endif
 
156
 
 
157
/* ----------------------------------------------------------------------- */
 
158
/*@}*/
 
159
 
 
160
/*@}*/
 
161
 
 
162
#endif /* __OPJ_MALLOC_H */
 
163