mirror of
https://github.com/json-c/json-c.git
synced 2026-03-13 18:19:06 +08:00
Issue #668: add the option to specify "cmake -DUSELOCALE_NEEDS_FREELOCALE=1" to work around a bug in older versions of FreeBSD (<12.4).
This commit is contained in:
@@ -89,6 +89,7 @@ option(ENABLE_THREADING "Enable partial threading support."
|
||||
option(OVERRIDE_GET_RANDOM_SEED "Override json_c_get_random_seed() with custom code." OFF)
|
||||
option(DISABLE_EXTRA_LIBS "Avoid linking against extra libraries, such as libbsd." OFF)
|
||||
option(DISABLE_JSON_POINTER "Disable JSON pointer (RFC6901) support." OFF)
|
||||
option(NEWLOCALE_NEEDS_FREELOCALE "Work around newlocale bugs in old FreeBSD by calling freelocale" OFF)
|
||||
|
||||
|
||||
if (UNIX OR MINGW OR CYGWIN)
|
||||
|
||||
@@ -137,6 +137,9 @@
|
||||
/* Define to 1 if you have the `uselocale' function. */
|
||||
#cmakedefine HAVE_USELOCALE
|
||||
|
||||
/* Define to 1 if newlocale() needs freelocale() called on it's `base` argument */
|
||||
#cmakedefine NEWLOCALE_NEEDS_FREELOCALE
|
||||
|
||||
/* Define to 1 if you have the `vasprintf' function. */
|
||||
#cmakedefine HAVE_VASPRINTF
|
||||
|
||||
|
||||
@@ -344,6 +344,11 @@ struct json_object *json_tokener_parse_ex(struct json_tokener *tok, const char *
|
||||
freelocale(duploc);
|
||||
return NULL;
|
||||
}
|
||||
#ifdef NEWLOCALE_NEEDS_FREELOCALE
|
||||
// Older versions of FreeBSD (<12.4) don't free the locale
|
||||
// passed to newlocale(), so do it here
|
||||
freelocale(duploc);
|
||||
#endif
|
||||
uselocale(newloc);
|
||||
}
|
||||
#elif defined(HAVE_SETLOCALE)
|
||||
|
||||
Reference in New Issue
Block a user