libcurl-thread.3: Warn memory functions must be thread safe

Bug: http://curl.haxx.se/mail/lib-2015-07/0149.html
Reported-by: Eric Ridge
This commit is contained in:
Jay Satiro 2015-07-31 01:58:03 -04:00
parent 909f0a82b0
commit 0da1f5dc5c
2 changed files with 15 additions and 7 deletions

View File

@ -36,9 +36,9 @@ This function works exactly as \fIcurl_global_init(3)\fP with one addition: it
allows the application to set callbacks to replace the otherwise used internal allows the application to set callbacks to replace the otherwise used internal
memory functions. memory functions.
This man page only adds documentation for the callbacks, see the When you use this function, all callback arguments must be set to valid
\fIcurl_global_init(3)\fP man page for all the rest. When you use this function pointers. \fBIf you are using libcurl with multiple threads the
function, all callback arguments must be set to valid function pointers. callback replacement functions must be thread safe.\fP
The prototypes for the given callbacks should match these: The prototypes for the given callbacks should match these:
.IP "void *malloc_callback(size_t size);" .IP "void *malloc_callback(size_t size);"
@ -51,6 +51,9 @@ To replace realloc()
To replace strdup() To replace strdup()
.IP "void *calloc_callback(size_t nmemb, size_t size);" .IP "void *calloc_callback(size_t nmemb, size_t size);"
To replace calloc() To replace calloc()
.RE
This function is otherwise the same as \fIcurl_global_init(3)\fP, please refer
to that man page for documentation.
.SH "CAUTION" .SH "CAUTION"
Manipulating these gives considerable powers to the application to severely Manipulating these gives considerable powers to the application to severely
screw things up for libcurl. Take care! screw things up for libcurl. Take care!

View File

@ -101,9 +101,14 @@ are Linux, Solaris and Windows.
\fBcurl_global_* functions.\fP These functions are not thread safe. If you are \fBcurl_global_* functions.\fP These functions are not thread safe. If you are
using libcurl with multiple threads it is especially important that before use using libcurl with multiple threads it is especially important that before use
you call \fIcurl_global_init(3)\fP to explicitly initialize the library and its you call \fIcurl_global_init(3)\fP or \fIcurl_global_init_mem(3)\fP to
dependents, rather than rely on the "lazy" fail-safe initialization that takes explicitly initialize the library and its dependents, rather than rely on the
place the first time \fIcurl_easy_init(3)\fP is called. For an in-depth "lazy" fail-safe initialization that takes place the first time
explanation refer to \fIlibcurl(3)\fP section \fBGLOBAL CONSTANTS\fP. \fIcurl_easy_init(3)\fP is called. For an in-depth explanation refer to
\fIlibcurl(3)\fP section \fBGLOBAL CONSTANTS\fP.
\fBMemory functions.\fP These functions, provided either by your operating
system or your own replacements, must be thread safe. You can use
\fIcurl_global_init_mem(3)\fP to set your own replacement memory functions.
\fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP is not thread-safe. \fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP is not thread-safe.