mirror of
https://git.musl-libc.org/git/musl
synced 2025-01-10 16:42:59 +03:00
fix localeconv values and implementation
dynamic-allocation of the structure is not valid; it can crash an application if malloc fails. since localeconv is not specified to have failure conditions, the object needs to have static storage duration. need to review whether all the values are right or not still..
This commit is contained in:
parent
ee96c50d4b
commit
85a3ba3a28
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user