@@ -17,6 +17,7 @@
|
||||
#include "fileio.h"
|
||||
#include "hashmap.h"
|
||||
#include "locale-util.h"
|
||||
#include "missing_syscall.h"
|
||||
#include "path-util.h"
|
||||
#include "set.h"
|
||||
#include "string-table.h"
|
||||
@@ -303,6 +304,12 @@ bool is_locale_utf8(void) {
|
||||
} else if (r != -ENXIO)
|
||||
log_debug_errno(r, "Failed to parse $SYSTEMD_UTF8, ignoring: %m");
|
||||
|
||||
/* This function may be called from libsystemd, and setlocale() is not thread safe. Assuming yes. */
|
||||
if (gettid() != raw_getpid()) {
|
||||
cached_answer = true;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!setlocale(LC_ALL, "")) {
|
||||
cached_answer = true;
|
||||
goto out;
|
||||
|
||||
Reference in New Issue
Block a user