about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/locale/localeconv.c43
1 files changed, 28 insertions, 15 deletions
diff --git a/src/locale/localeconv.c b/src/locale/localeconv.c
index d79d1c07..494cbcc0 100644
--- a/src/locale/localeconv.c
+++ b/src/locale/localeconv.c
@@ -2,21 +2,34 @@
 #include <string.h>
 #include <stdlib.h>
 
+static const struct lconv posix_lconv = {
+	.decimal_point = ".",
+	.thousands_sep = "",
+	.grouping = "",
+	.int_curr_symbol = "",
+	.currency_symbol = "",
+	.mon_decimal_point = "",
+	.mon_thousands_sep = "",
+	.mon_grouping = "",
+	.positive_sign = "",
+	.negative_sign = "",
+	.int_frac_digits = -1,
+	.frac_digits = -1,
+	.p_cs_precedes = -1,
+	.p_sep_by_space = -1,
+	.n_cs_precedes = -1,
+	.n_sep_by_space = -1,
+	.p_sign_posn = -1,
+	.n_sign_posn = -1,
+	.int_p_cs_precedes = -1,
+	.int_p_sep_by_space = -1,
+	.int_n_cs_precedes = -1,
+	.int_n_sep_by_space = -1,
+	.int_p_sign_posn = -1,
+	.int_n_sign_posn = -1,
+};
+
 struct lconv *localeconv(void)
 {
-	static struct lconv *posix_lconv;
-	if (posix_lconv) return posix_lconv;
-	posix_lconv = malloc(sizeof *posix_lconv);
-	memset(posix_lconv, -1, sizeof *posix_lconv);
-	posix_lconv->decimal_point = ".";
-	posix_lconv->thousands_sep = "";
-	posix_lconv->grouping = "\xff";
-	posix_lconv->int_curr_symbol = ""; //"\xc2\xa4";
-	posix_lconv->currency_symbol = "";
-	posix_lconv->mon_decimal_point = "";
-	posix_lconv->mon_thousands_sep = "";
-	posix_lconv->mon_grouping = "\xff";
-	posix_lconv->positive_sign = ""; // "+";
-	posix_lconv->negative_sign = ""; // "-";
-	return posix_lconv;
+	return (void *)&posix_lconv;
 }