Skip to content

Docs: document cJSON_Version non-reentrant return value - #1138

Open
YikunWei-dev wants to merge 1 commit into
DaveGamble:masterfrom
YikunWei-dev:docs/thread-safety-version
Open

YikunWei-dev wants to merge 1 commit into
DaveGamble:masterfrom
YikunWei-dev:docs/thread-safety-version

Conversation

@YikunWei-dev

Copy link
Copy Markdown

cJSON_Version() returns a pointer to a static internal buffer that is overwritten on every call, so the returned pointer is only valid until the next call and must not be shared between threads. This was not documented anywhere (the existing Thread Safety section only covered cJSON_GetErrorPtr, cJSON_InitHooks and setlocale).

Add a note to the cJSON_Version declaration in cJSON.h, extend the "Thread Safety" section in README.md, and add a regression test in tests/misc_tests.c that captures the reused-buffer contract.

cJSON_Version() returns a pointer to a static internal buffer that is
overwritten on every call, so the returned pointer is only valid until
the next call and must not be shared between threads. This was not
documented anywhere (the existing Thread Safety section only covered
cJSON_GetErrorPtr, cJSON_InitHooks and setlocale).

Add a note to the cJSON_Version declaration in cJSON.h, extend the
"Thread Safety" section in README.md, and add a regression test in
tests/misc_tests.c that captures the reused-buffer contract.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant