OLD | NEW |
1 /////////////////////////////////////////////////////////////////////////////// | 1 /////////////////////////////////////////////////////////////////////////////// |
2 // | 2 // |
3 /// \file common.h | 3 /// \file common.h |
4 /// \brief Common functions needed in many places in liblzma | 4 /// \brief Common functions needed in many places in liblzma |
5 // | 5 // |
6 // Author: Lasse Collin | 6 // Author: Lasse Collin |
7 // | 7 // |
8 // This file has been put into the public domain. | 8 // This file has been put into the public domain. |
9 // You can do whatever you want with this file. | 9 // You can do whatever you want with this file. |
10 // | 10 // |
(...skipping 17 matching lines...) Expand all Loading... |
28 lzma_version_string(void) | 28 lzma_version_string(void) |
29 { | 29 { |
30 return LZMA_VERSION_STRING; | 30 return LZMA_VERSION_STRING; |
31 } | 31 } |
32 | 32 |
33 | 33 |
34 /////////////////////// | 34 /////////////////////// |
35 // Memory allocation // | 35 // Memory allocation // |
36 /////////////////////// | 36 /////////////////////// |
37 | 37 |
38 extern void * lzma_attribute((malloc)) | 38 extern void * lzma_attribute((__malloc__)) lzma_attr_alloc_size(1) |
39 lzma_alloc(size_t size, lzma_allocator *allocator) | 39 lzma_alloc(size_t size, lzma_allocator *allocator) |
40 { | 40 { |
41 // Some malloc() variants return NULL if called with size == 0. | 41 // Some malloc() variants return NULL if called with size == 0. |
42 if (size == 0) | 42 if (size == 0) |
43 size = 1; | 43 size = 1; |
44 | 44 |
45 void *ptr; | 45 void *ptr; |
46 | 46 |
47 if (allocator != NULL && allocator->alloc != NULL) | 47 if (allocator != NULL && allocator->alloc != NULL) |
48 ptr = allocator->alloc(allocator->opaque, 1, size); | 48 ptr = allocator->alloc(allocator->opaque, 1, size); |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 { | 175 { |
176 // Sanity checks | 176 // Sanity checks |
177 if ((strm->next_in == NULL && strm->avail_in != 0) | 177 if ((strm->next_in == NULL && strm->avail_in != 0) |
178 || (strm->next_out == NULL && strm->avail_out != 0) | 178 || (strm->next_out == NULL && strm->avail_out != 0) |
179 || strm->internal == NULL | 179 || strm->internal == NULL |
180 || strm->internal->next.code == NULL | 180 || strm->internal->next.code == NULL |
181 || (unsigned int)(action) > LZMA_FINISH | 181 || (unsigned int)(action) > LZMA_FINISH |
182 || !strm->internal->supported_actions[action]) | 182 || !strm->internal->supported_actions[action]) |
183 return LZMA_PROG_ERROR; | 183 return LZMA_PROG_ERROR; |
184 | 184 |
| 185 // Check if unsupported members have been set to non-zero or non-NULL, |
| 186 // which would indicate that some new feature is wanted. |
| 187 if (strm->reserved_ptr1 != NULL |
| 188 || strm->reserved_ptr2 != NULL |
| 189 || strm->reserved_ptr3 != NULL |
| 190 || strm->reserved_ptr4 != NULL |
| 191 || strm->reserved_int1 != 0 |
| 192 || strm->reserved_int2 != 0 |
| 193 || strm->reserved_int3 != 0 |
| 194 || strm->reserved_int4 != 0 |
| 195 || strm->reserved_enum1 != LZMA_RESERVED_ENUM |
| 196 || strm->reserved_enum2 != LZMA_RESERVED_ENUM) |
| 197 return LZMA_OPTIONS_ERROR; |
| 198 |
185 switch (strm->internal->sequence) { | 199 switch (strm->internal->sequence) { |
186 case ISEQ_RUN: | 200 case ISEQ_RUN: |
187 switch (action) { | 201 switch (action) { |
188 case LZMA_RUN: | 202 case LZMA_RUN: |
189 break; | 203 break; |
190 | 204 |
191 case LZMA_SYNC_FLUSH: | 205 case LZMA_SYNC_FLUSH: |
192 strm->internal->sequence = ISEQ_SYNC_FLUSH; | 206 strm->internal->sequence = ISEQ_SYNC_FLUSH; |
193 break; | 207 break; |
194 | 208 |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
365 if (strm == NULL || strm->internal == NULL | 379 if (strm == NULL || strm->internal == NULL |
366 || strm->internal->next.memconfig == NULL) | 380 || strm->internal->next.memconfig == NULL) |
367 return LZMA_PROG_ERROR; | 381 return LZMA_PROG_ERROR; |
368 | 382 |
369 if (new_memlimit != 0 && new_memlimit < LZMA_MEMUSAGE_BASE) | 383 if (new_memlimit != 0 && new_memlimit < LZMA_MEMUSAGE_BASE) |
370 return LZMA_MEMLIMIT_ERROR; | 384 return LZMA_MEMLIMIT_ERROR; |
371 | 385 |
372 return strm->internal->next.memconfig(strm->internal->next.coder, | 386 return strm->internal->next.memconfig(strm->internal->next.coder, |
373 &memusage, &old_memlimit, new_memlimit); | 387 &memusage, &old_memlimit, new_memlimit); |
374 } | 388 } |
OLD | NEW |