Bug 95481 - Build fails on Android due to broken lconv struct
This commit is contained in:
parent
3c2793a32e
commit
7441dbec03
21
src/fcxml.c
21
src/fcxml.c
|
@ -1352,7 +1352,11 @@ FcParseInt (FcConfigParse *parse)
|
||||||
static double
|
static double
|
||||||
FcStrtod (char *s, char **end)
|
FcStrtod (char *s, char **end)
|
||||||
{
|
{
|
||||||
|
#ifndef __BIONIC__
|
||||||
struct lconv *locale_data;
|
struct lconv *locale_data;
|
||||||
|
#endif
|
||||||
|
const char *decimal_point;
|
||||||
|
int dlen;
|
||||||
char *dot;
|
char *dot;
|
||||||
double v;
|
double v;
|
||||||
|
|
||||||
|
@ -1360,14 +1364,21 @@ FcStrtod (char *s, char **end)
|
||||||
* Have to swap the decimal point to match the current locale
|
* Have to swap the decimal point to match the current locale
|
||||||
* if that locale doesn't use 0x2e
|
* if that locale doesn't use 0x2e
|
||||||
*/
|
*/
|
||||||
|
#ifndef __BIONIC__
|
||||||
|
locale_data = localeconv ();
|
||||||
|
decimal_point = locale_data->decimal_point;
|
||||||
|
dlen = strlen (decimal_point);
|
||||||
|
#else
|
||||||
|
decimal_point = ".";
|
||||||
|
dlen = 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
if ((dot = strchr (s, 0x2e)) &&
|
if ((dot = strchr (s, 0x2e)) &&
|
||||||
(locale_data = localeconv ()) &&
|
(decimal_point[0] != 0x2e ||
|
||||||
(locale_data->decimal_point[0] != 0x2e ||
|
decimal_point[1] != 0))
|
||||||
locale_data->decimal_point[1] != 0))
|
|
||||||
{
|
{
|
||||||
char buf[128];
|
char buf[128];
|
||||||
int slen = strlen (s);
|
int slen = strlen (s);
|
||||||
int dlen = strlen (locale_data->decimal_point);
|
|
||||||
|
|
||||||
if (slen + dlen > (int) sizeof (buf))
|
if (slen + dlen > (int) sizeof (buf))
|
||||||
{
|
{
|
||||||
|
@ -1381,7 +1392,7 @@ FcStrtod (char *s, char **end)
|
||||||
/* mantissa */
|
/* mantissa */
|
||||||
strncpy (buf, s, dot - s);
|
strncpy (buf, s, dot - s);
|
||||||
/* decimal point */
|
/* decimal point */
|
||||||
strcpy (buf + (dot - s), locale_data->decimal_point);
|
strcpy (buf + (dot - s), decimal_point);
|
||||||
/* rest of number */
|
/* rest of number */
|
||||||
strcpy (buf + (dot - s) + dlen, dot + 1);
|
strcpy (buf + (dot - s) + dlen, dot + 1);
|
||||||
buf_end = 0;
|
buf_end = 0;
|
||||||
|
|
Loading…
Reference in New Issue