locale: ensure dcngettext() preserves errno
authorA. Wilcox <AWilcox@Wilcox-Tech.com>
Mon, 28 Jan 2019 03:34:57 +0000 (21:34 -0600)
committerRich Felker <dalias@aerifal.cx>
Thu, 7 Feb 2019 17:41:16 +0000 (12:41 -0500)
commit8d82971775343f3c52294e957c52ad1f758395ef
tree57b1d12632c339680b8f33935159c82623741b02
parent1691b23955590d1eb66a11158fdd91c86337e886
locale: ensure dcngettext() preserves errno

Some packages call gettext to format a message to be sent to perror.
If the currently set user locale points to a non-existent .mo file,
open via __map_file in dcngettext will set errno to ENOENT.

Maintainer's notes: Non-modification of errno is a documented part of
the interface contract for the GNU version of this function and likely
other versions. The issue being fixed here seems to be a regression
from commit 1b52863e244ecee5b5935b6d36bb9e6efe84c035, which enabled
setting of errno from __map_file.
src/locale/dcngettext.c