Mercurial > public > mercurial-scm > hg
comparison contrib/python-zstandard/zstd/common/zstd_common.c @ 37495:b1fb341d8a61
zstandard: vendor python-zstandard 0.9.0
This was just released. It features a number of goodies. More info at
https://gregoryszorc.com/blog/2018/04/09/release-of-python-zstandard-0.9/.
The clang-format ignore list was updated to reflect the new source
of files.
The project contains a vendored copy of zstandard 1.3.4. The old
version was 1.1.3. One of the changes between those versions is that
zstandard is now dual licensed BSD + GPLv2 and the patent rights grant
has been removed. Good riddance.
The API should be backwards compatible. So no changes in core
should be needed. However, there were a number of changes in the
library that we'll want to adapt to. Those will be addressed in
subsequent commits.
Differential Revision: https://phab.mercurial-scm.org/D3198
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Mon, 09 Apr 2018 10:13:29 -0700 |
parents | c32454d69b85 |
children | 73fef626dae3 |
comparison
equal
deleted
inserted
replaced
37494:1ce7a55b09d1 | 37495:b1fb341d8a61 |
---|---|
1 /** | 1 /* |
2 * Copyright (c) 2016-present, Yann Collet, Facebook, Inc. | 2 * Copyright (c) 2016-present, Yann Collet, Facebook, Inc. |
3 * All rights reserved. | 3 * All rights reserved. |
4 * | 4 * |
5 * This source code is licensed under the BSD-style license found in the | 5 * This source code is licensed under both the BSD-style license (found in the |
6 * LICENSE file in the root directory of this source tree. An additional grant | 6 * LICENSE file in the root directory of this source tree) and the GPLv2 (found |
7 * of patent rights can be found in the PATENTS file in the same directory. | 7 * in the COPYING file in the root directory of this source tree). |
8 * You may select, at your option, one of the above-listed licenses. | |
8 */ | 9 */ |
9 | 10 |
10 | 11 |
11 | 12 |
12 /*-************************************* | 13 /*-************************************* |
13 * Dependencies | 14 * Dependencies |
14 ***************************************/ | 15 ***************************************/ |
15 #include <stdlib.h> /* malloc */ | 16 #include <stdlib.h> /* malloc, calloc, free */ |
17 #include <string.h> /* memset */ | |
16 #include "error_private.h" | 18 #include "error_private.h" |
17 #define ZSTD_STATIC_LINKING_ONLY | 19 #include "zstd_internal.h" |
18 #include "zstd.h" /* declaration of ZSTD_isError, ZSTD_getErrorName, ZSTD_getErrorCode, ZSTD_getErrorString, ZSTD_versionNumber */ | |
19 | 20 |
20 | 21 |
21 /*-**************************************** | 22 /*-**************************************** |
22 * Version | 23 * Version |
23 ******************************************/ | 24 ******************************************/ |
24 unsigned ZSTD_versionNumber (void) { return ZSTD_VERSION_NUMBER; } | 25 unsigned ZSTD_versionNumber(void) { return ZSTD_VERSION_NUMBER; } |
26 | |
27 const char* ZSTD_versionString(void) { return ZSTD_VERSION_STRING; } | |
25 | 28 |
26 | 29 |
27 /*-**************************************** | 30 /*-**************************************** |
28 * ZSTD Error Management | 31 * ZSTD Error Management |
29 ******************************************/ | 32 ******************************************/ |
30 /*! ZSTD_isError() : | 33 /*! ZSTD_isError() : |
31 * tells if a return value is an error code */ | 34 * tells if a return value is an error code */ |
32 unsigned ZSTD_isError(size_t code) { return ERR_isError(code); } | 35 unsigned ZSTD_isError(size_t code) { return ERR_isError(code); } |
33 | 36 |
34 /*! ZSTD_getErrorName() : | 37 /*! ZSTD_getErrorName() : |
35 * provides error code string from function result (useful for debugging) */ | 38 * provides error code string from function result (useful for debugging) */ |
36 const char* ZSTD_getErrorName(size_t code) { return ERR_getErrorName(code); } | 39 const char* ZSTD_getErrorName(size_t code) { return ERR_getErrorName(code); } |
37 | 40 |
38 /*! ZSTD_getError() : | 41 /*! ZSTD_getError() : |
39 * convert a `size_t` function result into a proper ZSTD_errorCode enum */ | 42 * convert a `size_t` function result into a proper ZSTD_errorCode enum */ |
40 ZSTD_ErrorCode ZSTD_getErrorCode(size_t code) { return ERR_getErrorCode(code); } | 43 ZSTD_ErrorCode ZSTD_getErrorCode(size_t code) { return ERR_getErrorCode(code); } |
41 | 44 |
42 /*! ZSTD_getErrorString() : | 45 /*! ZSTD_getErrorString() : |
43 * provides error code string from enum */ | 46 * provides error code string from enum */ |
44 const char* ZSTD_getErrorString(ZSTD_ErrorCode code) { return ERR_getErrorName(code); } | 47 const char* ZSTD_getErrorString(ZSTD_ErrorCode code) { return ERR_getErrorString(code); } |
48 | |
49 /*! g_debuglog_enable : | |
50 * turn on/off debug traces (global switch) */ | |
51 #if defined(ZSTD_DEBUG) && (ZSTD_DEBUG >= 2) | |
52 int g_debuglog_enable = 1; | |
53 #endif | |
45 | 54 |
46 | 55 |
47 /*=************************************************************** | 56 /*=************************************************************** |
48 * Custom allocator | 57 * Custom allocator |
49 ****************************************************************/ | 58 ****************************************************************/ |
50 /* default uses stdlib */ | 59 void* ZSTD_malloc(size_t size, ZSTD_customMem customMem) |
51 void* ZSTD_defaultAllocFunction(void* opaque, size_t size) | |
52 { | 60 { |
53 void* address = malloc(size); | 61 if (customMem.customAlloc) |
54 (void)opaque; | 62 return customMem.customAlloc(customMem.opaque, size); |
55 return address; | 63 return malloc(size); |
56 } | 64 } |
57 | 65 |
58 void ZSTD_defaultFreeFunction(void* opaque, void* address) | 66 void* ZSTD_calloc(size_t size, ZSTD_customMem customMem) |
59 { | 67 { |
60 (void)opaque; | 68 if (customMem.customAlloc) { |
61 free(address); | 69 /* calloc implemented as malloc+memset; |
62 } | 70 * not as efficient as calloc, but next best guess for custom malloc */ |
63 | 71 void* const ptr = customMem.customAlloc(customMem.opaque, size); |
64 void* ZSTD_malloc(size_t size, ZSTD_customMem customMem) | 72 memset(ptr, 0, size); |
65 { | 73 return ptr; |
66 return customMem.customAlloc(customMem.opaque, size); | 74 } |
75 return calloc(1, size); | |
67 } | 76 } |
68 | 77 |
69 void ZSTD_free(void* ptr, ZSTD_customMem customMem) | 78 void ZSTD_free(void* ptr, ZSTD_customMem customMem) |
70 { | 79 { |
71 if (ptr!=NULL) | 80 if (ptr!=NULL) { |
72 customMem.customFree(customMem.opaque, ptr); | 81 if (customMem.customFree) |
82 customMem.customFree(customMem.opaque, ptr); | |
83 else | |
84 free(ptr); | |
85 } | |
73 } | 86 } |