diff options
| author | Emmanuele Bassi <ebassi@gmail.com> | 2020-12-31 15:18:14 +0000 | 
|---|---|---|
| committer | Emmanuele Bassi <ebassi@gmail.com> | 2020-12-31 15:18:14 +0000 | 
| commit | 515d1e39f6f418a60d9e4ee98a48608c1b5fcc44 (patch) | |
| tree | 841908db4bbb926762ce7b6a283c50bf91ad85a0 /json-glib/json-parser.c | |
| parent | 1bd60e1a07f4c978ed16ddb6d1876b55be87e200 (diff) | |
| parent | 03ef3863734ec62f29b99205b717a826d6c76b00 (diff) | |
| download | json-glib-515d1e39f6f418a60d9e4ee98a48608c1b5fcc44.tar.gz | |
Merge branch 'handle-utf8-bom' into 'master'
parser: Ignore UTF-8 BOM if necessary
Closes #56
See merge request GNOME/json-glib!35
Diffstat (limited to 'json-glib/json-parser.c')
| -rw-r--r-- | json-glib/json-parser.c | 16 | 
1 files changed, 15 insertions, 1 deletions
| diff --git a/json-glib/json-parser.c b/json-glib/json-parser.c index 4e08848..4a560d8 100644 --- a/json-glib/json-parser.c +++ b/json-glib/json-parser.c @@ -970,7 +970,7 @@ json_parser_new_immutable (void)  static gboolean  json_parser_load (JsonParser   *parser, -                  const gchar  *data, +                  const gchar  *input_data,                    gsize         length,                    GError      **error)  { @@ -979,6 +979,7 @@ json_parser_load (JsonParser   *parser,    gboolean done;    gboolean retval = TRUE;    gint i; +  gchar *data = input_data;    json_parser_clear (parser); @@ -991,6 +992,19 @@ json_parser_load (JsonParser   *parser,        return FALSE;      } +  if (length >= 3) +    { +      /* Check for UTF-8 signature and skip it if necessary */ +       if (((data[0] & 0xFF) == 0xEF) && +           ((data[1] & 0xFF) == 0xBB) && +           ((data[2] & 0xFF) == 0xBF)) +         { +           JSON_NOTE (PARSER, "Skipping BOM"); +           data += 3; +           length -= 3; +         } +    } +    scanner = json_scanner_create (parser);    json_scanner_input_text (scanner, data, length); | 
