mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-05 22:48:07 +02:00
Fix compilation with bionic libc
Refactor out a cairo_get_locale_decimal_point() routine to handle a case where localeconv() is not available. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=70492 Reviewed-by: Bryce Harrington <b.harrington@samsung.com> [edit: Condensed cairo_get_locale_decimal_point and conditionalized locale.h inclusion. -- bryce]
This commit is contained in:
parent
a02e29a12d
commit
9a19ef1858
5 changed files with 24 additions and 11 deletions
|
|
@ -295,7 +295,6 @@ decode_nibble (int n, char *buf)
|
|||
static unsigned char *
|
||||
decode_real (unsigned char *p, double *real)
|
||||
{
|
||||
struct lconv *locale_data;
|
||||
const char *decimal_point;
|
||||
int decimal_point_len;
|
||||
int n;
|
||||
|
|
@ -305,8 +304,7 @@ decode_real (unsigned char *p, double *real)
|
|||
char *buf = buffer;
|
||||
char *buf_end = buffer + sizeof (buffer);
|
||||
|
||||
locale_data = localeconv ();
|
||||
decimal_point = locale_data->decimal_point;
|
||||
decimal_point = cairo_get_locale_decimal_point ();
|
||||
decimal_point_len = strlen (decimal_point);
|
||||
|
||||
assert (decimal_point_len != 0);
|
||||
|
|
|
|||
|
|
@ -759,6 +759,24 @@ _cairo_half_from_float (float f)
|
|||
}
|
||||
}
|
||||
|
||||
#ifndef __BIONIC__
|
||||
# include <locale.h>
|
||||
|
||||
const char *
|
||||
cairo_get_locale_decimal_point (void)
|
||||
{
|
||||
struct lconv *locale_data = localeconv ();
|
||||
return locale_data->decimal_point;
|
||||
}
|
||||
|
||||
#else
|
||||
/* Android's Bionic libc doesn't provide decimal_point */
|
||||
const char *
|
||||
cairo_get_locale_decimal_point (void)
|
||||
{
|
||||
return '.';
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@
|
|||
#include "cairo-compiler-private.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <locale.h>
|
||||
#include <errno.h>
|
||||
|
||||
/* Numbers printed with %f are printed with this number of significant
|
||||
|
|
@ -303,7 +302,6 @@ _cairo_output_stream_write_hex_string (cairo_output_stream_t *stream,
|
|||
static void
|
||||
_cairo_dtostr (char *buffer, size_t size, double d, cairo_bool_t limited_precision)
|
||||
{
|
||||
struct lconv *locale_data;
|
||||
const char *decimal_point;
|
||||
int decimal_point_len;
|
||||
char *p;
|
||||
|
|
@ -314,8 +312,7 @@ _cairo_dtostr (char *buffer, size_t size, double d, cairo_bool_t limited_precisi
|
|||
if (d == 0.0)
|
||||
d = 0.0;
|
||||
|
||||
locale_data = localeconv ();
|
||||
decimal_point = locale_data->decimal_point;
|
||||
decimal_point = cairo_get_locale_decimal_point ();
|
||||
decimal_point_len = strlen (decimal_point);
|
||||
|
||||
assert (decimal_point_len != 0);
|
||||
|
|
|
|||
|
|
@ -53,7 +53,6 @@
|
|||
#include "cairo-output-stream-private.h"
|
||||
|
||||
#include <ctype.h>
|
||||
#include <locale.h>
|
||||
|
||||
#define TYPE1_STACKSIZE 24 /* Defined in Type 1 Font Format */
|
||||
|
||||
|
|
@ -309,12 +308,10 @@ cairo_type1_font_subset_get_matrix (cairo_type1_font_subset_t *font,
|
|||
const char *start, *end, *segment_end;
|
||||
int ret, s_max, i, j;
|
||||
char *s;
|
||||
struct lconv *locale_data;
|
||||
const char *decimal_point;
|
||||
int decimal_point_len;
|
||||
|
||||
locale_data = localeconv ();
|
||||
decimal_point = locale_data->decimal_point;
|
||||
decimal_point = cairo_get_locale_decimal_point ();
|
||||
decimal_point_len = strlen (decimal_point);
|
||||
|
||||
assert (decimal_point_len != 0);
|
||||
|
|
|
|||
|
|
@ -871,6 +871,9 @@ _cairo_intern_string (const char **str_inout, int len);
|
|||
cairo_private void
|
||||
_cairo_intern_string_reset_static_data (void);
|
||||
|
||||
cairo_private const char *
|
||||
cairo_get_locale_decimal_point (void);
|
||||
|
||||
/* cairo-path-fixed.c */
|
||||
cairo_private cairo_path_fixed_t *
|
||||
_cairo_path_fixed_create (void);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue