Skip to content

std::locale::global is unsafe #114

@amirgon

Description

@amirgon

Tabulate code calls std::locale::global in several places.
std::locale::global is not thread-safe and makes tabulate unsafe to use inside a larger multithreaded application.
An application might change the locale at any time and conflict with tabulate calls to std::locale::global.
This is not a theoretical issue, I actually experienced application crashes until I removed all std::locale::global calls from tabulate.

I suggest removing all calls to std::locale::global and either pass locale directly to functions that accept locale as an argument, or use imbue to configure a stream to a locale.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions