aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLasse Collin <lasse.collin@tukaani.org>2011-04-11 19:26:27 +0300
committerLasse Collin <lasse.collin@tukaani.org>2011-04-11 19:26:27 +0300
commita7934c446a58e20268689899d2a39f50e571f251 (patch)
tree03eece5c4d85a18dcb974e04be07ef50b177fa39 /src
parentliblzma: Add an internal function lzma_mt_block_size(). (diff)
downloadxz-a7934c446a58e20268689899d2a39f50e571f251.tar.xz
liblzma: API comment about lzma_allocator with threaded coding.
Diffstat (limited to '')
-rw-r--r--src/liblzma/api/lzma/base.h18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/liblzma/api/lzma/base.h b/src/liblzma/api/lzma/base.h
index 43dde8d6..0bad7bc1 100644
--- a/src/liblzma/api/lzma/base.h
+++ b/src/liblzma/api/lzma/base.h
@@ -332,11 +332,19 @@ typedef enum {
* malloc() and free(). C++ users should note that the custom memory
* handling functions must not throw exceptions.
*
- * liblzma doesn't make an internal copy of lzma_allocator. Thus, it is
- * OK to change these function pointers in the middle of the coding
- * process, but obviously it must be done carefully to make sure that the
- * replacement `free' can deallocate memory allocated by the earlier
- * `alloc' function(s).
+ * Single-threaded mode only: liblzma doesn't make an internal copy of
+ * lzma_allocator. Thus, it is OK to change these function pointers in
+ * the middle of the coding process, but obviously it must be done
+ * carefully to make sure that the replacement `free' can deallocate
+ * memory allocated by the earlier `alloc' function(s).
+ *
+ * Multithreaded mode: liblzma might internally store pointers to the
+ * lzma_allocator given via the lzma_stream structure. The application
+ * must not change the allocator pointer in lzma_stream or the contents
+ * of the pointed lzma_allocator structure until lzma_end() has been used
+ * to free the memory associated with that lzma_stream. The allocation
+ * functions might be called simultaneously from multiple threads, and
+ * thus they must be thread safe.
*/
typedef struct {
/**