commit 193ce0426d73d7956b9258e85e3634bf5b67ecea
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Thu Feb 1 19:16:08 2018 -0600

    Update NEWS for 2.42.2

 NEWS | 2 ++
 1 file changed, 2 insertions(+)

commit 724e28216093b7ffec0b0b02bb10addbdab0cfcc
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Thu Feb 1 18:41:59 2018 -0600

    Move rsvg_handle_get_pixbuf*() to rsvg-handle.c
    
    This lets us remove rsvg.c

 Makefile.am   |   1 -
 rsvg-handle.c |  74 +++++++++++++++++++++++++++++++++++++
 rsvg.c        | 117 ----------------------------------------------------------
 3 files changed, 74 insertions(+), 118 deletions(-)

commit 2f178ec76b06f051d137807dcb92e663872d9fca
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Thu Feb 1 18:26:28 2018 -0600

    *.rs - Clean up the imports a bit

 rust/src/bbox.rs         | 4 ++--
 rust/src/color.rs        | 7 +++----
 rust/src/gradient.rs     | 8 ++++----
 rust/src/marker.rs       | 3 +--
 rust/src/node.rs         | 8 ++++----
 rust/src/opacity.rs      | 4 ++--
 rust/src/paint_server.rs | 2 +-
 rust/src/parsers.rs      | 8 ++++----
 rust/src/path_builder.rs | 2 +-
 rust/src/pattern.rs      | 8 ++++----
 rust/src/shapes.rs       | 2 +-
 rust/src/stop.rs         | 6 +++---
 rust/src/structure.rs    | 4 ++--
 rust/src/transform.rs    | 8 ++++----
 rust/src/viewbox.rs      | 6 +++---
 15 files changed, 39 insertions(+), 41 deletions(-)

commit cf3d7963793fd0388266ef7f2e49d6d14fa65098
Merge: be8ec256 88abce8e
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Thu Feb 1 18:17:20 2018 -0600

    gitlab#136 - Parse stroke-dasharray correctly
    
    The stroke-dasharray parser is rewritten in Rust to better match the
    spec.
    
    Thanks to Jordan Petridis for all the work on this.

commit 88abce8ee2855b1ea486fc3b25f7e93691adbe69
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Thu Feb 1 18:02:53 2018 -0600

    Fix typo in error message

 rust/src/length.rs | 61 +++++++++++++++++++++++++++---------------------------
 1 file changed, 30 insertions(+), 31 deletions(-)

commit 156c2aa758657f746de8705d836763bfbe8750fc
Author: Jordan Petridis <jordanpetridis@protonmail.com>
Date:   Thu Feb 1 22:21:32 2018 +0200

    stroke-dash-array: Use lazy_static to cache the regex query.

 rust/Cargo.lock    |  1 +
 rust/Cargo.toml    |  1 +
 rust/src/length.rs | 12 ++++++++----
 rust/src/lib.rs    |  3 +++
 4 files changed, 13 insertions(+), 4 deletions(-)

commit d45ebdd84a68299d83b626cf71d47a880a5c5548
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Thu Feb 1 18:09:22 2018 -0600

    Remove painting-stroke-10-t.svg from the tests; it doesn't pass yet
    
    This is issue #165.

 .../reftests/svg1.1/painting-stroke-10-t-ref.png   | Bin 10109 -> 0 bytes
 .../reftests/svg1.1/painting-stroke-10-t.svg       |  78 ---------------------
 2 files changed, 78 deletions(-)

commit c9dc773779d8d71198f386a9f562ee29c2230d38
Author: Jordan Petridis <jordanpetridis@protonmail.com>
Date:   Wed Jan 31 18:02:46 2018 +0200

    Rerender the refference pngs from an opensuse machine.

 .../reftests/svg1.1/painting-stroke-01-t-ref.png    | Bin 12712 -> 11615 bytes
 .../reftests/svg1.1/painting-stroke-02-t-ref.png    | Bin 15962 -> 14903 bytes
 .../reftests/svg1.1/painting-stroke-03-t-ref.png    | Bin 16143 -> 15391 bytes
 .../reftests/svg1.1/painting-stroke-04-t-ref.png    | Bin 15297 -> 13854 bytes
 .../reftests/svg1.1/painting-stroke-05-t-ref.png    | Bin 7784 -> 7225 bytes
 .../reftests/svg1.1/painting-stroke-06-t-ref.png    | Bin 4939 -> 4616 bytes
 .../reftests/svg1.1/painting-stroke-07-t-ref.png    | Bin 6485 -> 6155 bytes
 .../reftests/svg1.1/painting-stroke-08-t-ref.png    | Bin 8854 -> 8495 bytes
 .../reftests/svg1.1/painting-stroke-09-t-ref.png    | Bin 4661 -> 4343 bytes
 .../reftests/svg1.1/painting-stroke-10-t-ref.png    | Bin 10215 -> 10109 bytes
 10 files changed, 0 insertions(+), 0 deletions(-)

commit be8ec256bfb699bd5f62575432b75f1a2945df4a
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Thu Feb 1 14:05:33 2018 -0600

    Update NEWS

 NEWS | 7 +++++++
 1 file changed, 7 insertions(+)

commit 6ea054e8bbf3bc3de13eff91d01787f057afe015
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Thu Feb 1 13:56:03 2018 -0600

    Add tests/fixtures/render-crash/195-filters-conv-05-f.svg
    
    To test for the bug from the previous commit

 .../render-crash/193-filters-conv-05-f.svg         | 83 ++++++++++++++++++++++
 1 file changed, 83 insertions(+)

commit f39a7f82d1be5fe78a8c103c01a7f1153fc3a8b5
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Thu Feb 1 13:53:11 2018 -0600

    gitlab#193 - Don't crash when feConvolveMatrix doesn't specify orderx/ordery
    
    We were not initializing the default values correctly, so
    rsvg_css_parse_number_list() would assert as it would get passed 0 for
    the expected length of the list.
    
    https://gitlab.gnome.org/GNOME/librsvg/issues/193

 rsvg-filter.c | 2 ++
 1 file changed, 2 insertions(+)

commit fac54f7bb16716fdc11ac039da24d0c4741ebbfd
Author: Jordan Petridis <jordanpetridis@protonmail.com>
Date:   Wed Jan 31 16:05:21 2018 +0200

    stroke-dash-array: Handle the case where a comma would be followed up with another comma.

 .gitlab-ci.yml     |  4 ++--
 rust/src/length.rs | 21 ++++++++++++---------
 rust/src/lib.rs    |  1 +
 3 files changed, 15 insertions(+), 11 deletions(-)

commit 79569409f5206b52c76e36dd791f09087bd9aa7b
Author: Jordan Petridis <jordanpetridis@protonmail.com>
Date:   Wed Jan 31 00:46:45 2018 +0200

    gitlab-ci: Extract png artifacts from /tmp.

 .gitlab-ci.yml | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

commit fdc0189fada8c97a3b53bc795f8571f62e261750
Author: Jordan Petridis <jordanpetridis@protonmail.com>
Date:   Tue Jan 30 18:04:34 2018 +0200

    stroke-dash-array: Normalize refference png files.

 .../reftests/svg1.1/painting-stroke-01-t-ref.png    | Bin 23012 -> 12712 bytes
 .../reftests/svg1.1/painting-stroke-02-t-ref.png    | Bin 27918 -> 15962 bytes
 .../reftests/svg1.1/painting-stroke-03-t-ref.png    | Bin 19469 -> 16143 bytes
 .../reftests/svg1.1/painting-stroke-04-t-ref.png    | Bin 18056 -> 15297 bytes
 .../reftests/svg1.1/painting-stroke-05-t-ref.png    | Bin 7464 -> 7784 bytes
 .../reftests/svg1.1/painting-stroke-06-t-ref.png    | Bin 5546 -> 4939 bytes
 .../reftests/svg1.1/painting-stroke-07-t-ref.png    | Bin 7975 -> 6485 bytes
 .../reftests/svg1.1/painting-stroke-08-t-ref.png    | Bin 7629 -> 8854 bytes
 .../reftests/svg1.1/painting-stroke-09-t-ref.png    | Bin 4590 -> 4661 bytes
 .../reftests/svg1.1/painting-stroke-10-t-ref.png    | Bin 11044 -> 10215 bytes
 10 files changed, 0 insertions(+), 0 deletions(-)

commit 5497bcd7275544eca3593d1093fb100559d4eda7
Author: Jordan Petridis <jordanpetridis@protonmail.com>
Date:   Tue Jan 30 16:20:06 2018 +0200

    Add painting-stroke-* tests from SVG1.1 test suite.

 .../reftests/svg1.1/painting-stroke-01-t-ref.png   | Bin 0 -> 23012 bytes
 .../reftests/svg1.1/painting-stroke-01-t.svg       |  68 ++++++++++++++++
 .../reftests/svg1.1/painting-stroke-02-t-ref.png   | Bin 0 -> 27918 bytes
 .../reftests/svg1.1/painting-stroke-02-t.svg       |  63 +++++++++++++++
 .../reftests/svg1.1/painting-stroke-03-t-ref.png   | Bin 0 -> 19469 bytes
 .../reftests/svg1.1/painting-stroke-03-t.svg       |  64 +++++++++++++++
 .../reftests/svg1.1/painting-stroke-04-t-ref.png   | Bin 0 -> 18056 bytes
 .../reftests/svg1.1/painting-stroke-04-t.svg       |  60 ++++++++++++++
 .../reftests/svg1.1/painting-stroke-05-t-ref.png   | Bin 0 -> 7464 bytes
 .../reftests/svg1.1/painting-stroke-05-t.svg       |  88 +++++++++++++++++++++
 .../reftests/svg1.1/painting-stroke-06-t-ref.png   | Bin 0 -> 5546 bytes
 .../reftests/svg1.1/painting-stroke-06-t.svg       |  74 +++++++++++++++++
 .../reftests/svg1.1/painting-stroke-07-t-ref.png   | Bin 0 -> 7975 bytes
 .../reftests/svg1.1/painting-stroke-07-t.svg       |  63 +++++++++++++++
 .../reftests/svg1.1/painting-stroke-08-t-ref.png   | Bin 0 -> 7629 bytes
 .../reftests/svg1.1/painting-stroke-08-t.svg       |  78 ++++++++++++++++++
 .../reftests/svg1.1/painting-stroke-09-t-ref.png   | Bin 0 -> 4590 bytes
 .../reftests/svg1.1/painting-stroke-09-t.svg       |  59 ++++++++++++++
 .../reftests/svg1.1/painting-stroke-10-t-ref.png   | Bin 0 -> 11044 bytes
 .../reftests/svg1.1/painting-stroke-10-t.svg       |  78 ++++++++++++++++++
 20 files changed, 695 insertions(+)

commit 62fbe52c756daded81f674822accea901c7b509a
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Mon Jan 29 18:46:44 2018 -0600

    Add painting-contgrol-02-f.svg from the SVG 1.1 test suite

 .../reftests/svg1.1/painting-control-02-f-ref.png  | Bin 0 -> 4437 bytes
 .../reftests/svg1.1/painting-control-02-f.svg      |  65 +++++++++++++++++++++
 2 files changed, 65 insertions(+)

commit 8d36d7015b96a531fbdbec5618a3b32c14c06e1e
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Mon Jan 29 18:44:50 2018 -0600

    If the length of the dashes is 0.0, don't dash at all, per the spec

 rsvg-cairo-draw.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

commit 8ebc8675c88791cceaa8040e5d00b1c107b7e0cc
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Mon Jan 29 18:35:11 2018 -0600

    rsvg_parse_stroke_dasharray(): New function, implemented in Rust
    
    We use this now instead of the shitty C parser for the
    stroke-dasharray attribute.  We still need to handle errors and
    inheritance.

 rsvg-cairo-draw.c  | 41 ++++++++++++++++++++++++++++++++--
 rsvg-styles.c      | 51 +++++-------------------------------------
 rsvg-styles.h      | 18 ++++++++++-----
 rust/src/length.rs | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++---
 rust/src/lib.rs    |  1 +
 5 files changed, 120 insertions(+), 56 deletions(-)

commit 2cf4d4de5644f37cee5fc53013b655b703c591b3
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Mon Jan 29 18:19:51 2018 -0600

    RsvgVpathDash: Rename internal fields to what we will refactor
    
    The new names will be those from the Rustified version

 rsvg-cairo-draw.c |  2 +-
 rsvg-styles.c     | 54 +++++++++++++++++++++++++++---------------------------
 rsvg-styles.h     |  4 ++--
 3 files changed, 30 insertions(+), 30 deletions(-)

commit 86e5228605a794e27f9045822d3d10d864738708
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Mon Jan 29 17:50:06 2018 -0600

    RsvgState: store the dash_offset here, not in the dasharray struct

 rsvg-cairo-draw.c | 2 +-
 rsvg-styles.c     | 8 ++++----
 rsvg-styles.h     | 2 +-
 3 files changed, 6 insertions(+), 6 deletions(-)

commit ce146bb8194a888ca9cade4d4e3fd49e75970e9a
Author: Jordan Petridis <jordanpetridis@protonmail.com>
Date:   Mon Jan 29 22:10:50 2018 +0200

    stroke-dasharray: Return an error if there is a trailling comma.

 rust/src/length.rs | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

commit f0a81520c76727c655e992cc7f8edcc8dc3e82f4
Author: Jordan Petridis <jordanpetridis@protonmail.com>
Date:   Mon Jan 29 21:48:51 2018 +0200

    stroke-dasharray: Remove filter empty strings since split_whitespace take care of that.

 rust/src/length.rs | 2 --
 1 file changed, 2 deletions(-)

commit 7ecd8eabd3dfbb89ab93cafdac804e5a459245ff
Author: Jordan Petridis <jordanpetridis@protonmail.com>
Date:   Mon Jan 29 20:09:06 2018 +0200

    stroke-dasharray: Rename the API and propagate the Error to the caller.

 rust/src/length.rs | 52 +++++++++++++++++++++++++++++++---------------------
 1 file changed, 31 insertions(+), 21 deletions(-)

commit 74bb27ebbc008860c562f3e5ac83875a5c38ca3f
Author: Jordan Petridis <jordanpetridis@protonmail.com>
Date:   Mon Jan 29 19:42:20 2018 +0200

    Remove check of the dash lenght and check of it's elements sum.
    
    There's no need to duplicate the array if the length is odd; Cairo takes care of that.
    There's no need to check the sum of the lengths here; It's done  at rendering time.

 rust/src/length.rs | 43 ++++---------------------------------------
 1 file changed, 4 insertions(+), 39 deletions(-)

commit 248fa61e00241ad99d590ffb6d993db3373cc21e
Author: Jordan Petridis <jordanpetridis@protonmail.com>
Date:   Thu Jan 25 19:35:39 2018 +0200

    stroke-dasharray: Return none and inherit states as well.

 rust/src/length.rs | 183 +++++++++++++++++++++++++++++------------------------
 1 file changed, 101 insertions(+), 82 deletions(-)

commit 75255bf3f57734f036504116ff5b787f6ad32bd5
Author: Jordan Petridis <jordanpetridis@protonmail.com>
Date:   Thu Jan 25 18:34:25 2018 +0200

    stroke-dasharray: Add some usuall case tests for the dasharray parser.

 rust/src/length.rs | 67 ++++++++++++++++++++++++++++++++++++++++++------------
 1 file changed, 53 insertions(+), 14 deletions(-)

commit df6571ff8507be45fd04b69440d9c6a8e171022a
Author: Jordan Petridis <jordanpetridis@protonmail.com>
Date:   Thu Jan 25 09:55:47 2018 +0200

    stroke-dasharray: Minor cleanup and added comments.

 rust/src/length.rs | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

commit 87e9610a4d87f2d27f27219e758b04b3a8a13afc
Author: Jordan Petridis <jordanpetridis@protonmail.com>
Date:   Wed Jan 24 23:14:41 2018 +0200

    stroke-dasharray: Implement error handling and majority of the spec behavior.

 rust/src/length.rs | 54 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 49 insertions(+), 5 deletions(-)

commit aafa701f1c28b0dd01b9a727f641800dc6dd999e
Author: Jordan Petridis <jordanpetridis@protonmail.com>
Date:   Wed Jan 24 21:04:36 2018 +0200

    Initial stroke-dasharray commit.

 rust/src/length.rs | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

commit 556fb62786bab88e4d08ca996e655cf9fb48e3e1
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Oct 3 10:18:29 2017 -0500

    marker.rs: Don't render markers if they are zero-sized, per the spec

 rust/src/marker.rs | 5 +++++
 1 file changed, 5 insertions(+)

commit bc1d7a86e16467336d3dd37ea913ce74fd1ff987
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Fri Jan 26 11:07:19 2018 -0600

    rsvg-paint-server.h: Remove unused prototypes

 rsvg-paint-server.h | 5 -----
 1 file changed, 5 deletions(-)

commit 15dcb4fbb8ef5592d2a52dc6edc2e0faf5c1774e
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Fri Jan 26 11:02:52 2018 -0600

    _set_source_rsvg_paint_server(): Remove unused argument
    
    Clean up the callers a little bit by making the calls to this function
    look all the same.

 rsvg-cairo-draw.c | 30 +++++++++++++-----------------
 1 file changed, 13 insertions(+), 17 deletions(-)

commit c8529f9975095ae1902efd311476a20979ab056a
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Thu Jan 25 18:10:25 2018 -0600

    path_parser: When reading a number, don't call powf() if there's no exponent
    
    powf() was showing up in the profile.  We'll switch to Rust's own
    number reader later, but for that we have to change the parsing
    machinery to be able to slice the original string.

 rust/src/path_parser.rs | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

commit 41da969c8899c5579e8996dc203f8d94847b5b0a
Merge: 009e8e6a c1de6d5d
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Wed Jan 24 15:35:58 2018 -0600

    Merge branch 'ignatenko/librsvg-cssparser-update'

commit 009e8e6a1a1905c08395d1b9520ef4c498398400
Merge: 3425537f d6cff8bd
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Wed Jan 24 13:01:10 2018 -0600

    gitlab#191 - Merge branch 'reduce-allocations'
    
    This reduces the number of allocations in the parsing stage.  We were
    doing from_glib_none(c_string) for all the incoming strings.  Since
    they come from libxml2, they are already valid UTF-8.
    
    We add a utility function, util::utf8_cstr(), that creates a &str from
    a *const libc::c_char without copies or allocations.
    
    We add a PropertyBag wrapper for the RsvgPropertyBag raw pointer (it's
    just a pointer to a GHashTable).
    
    We turn calls to from_glib_none(c_string) into utf8_cstr() where
    appropriate.
    
    This has very minor performance consequences, something hard to
    measure like 0.1% faster.  It definitely reduces the number of
    allocations and UTF-8 revalidations.
    
    https://gitlab.gnome.org/GNOME/librsvg/issues/191

commit d6cff8bdcf41b5f1448582cc1824bbc24fb84db4
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Wed Jan 24 12:30:24 2018 -0600

    emit_marker_by_name(): Don't copy the incoming string

 rust/src/marker.rs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 5f666a73b8dd0bd5d408962defe305322c628006
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Wed Jan 24 12:27:47 2018 -0600

    rsvg_css_parse_color(): Don't copy the incoming string

 rust/src/color.rs | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

commit 6bff4ea2b312738a1236ca3c73ca34a9c416dc75
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Wed Jan 24 12:24:25 2018 -0600

    rsvg_css_parse_number_list(): Don't copy the incoming string

 rust/src/parsers.rs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit adb2e83b2af16655efdf0d40eefa72d7ea2e04d5
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Wed Jan 24 12:22:40 2018 -0600

    rsvg_css_parse_number_optional_number(): Don't copy the incoming string

 rust/src/parsers.rs | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

commit 10bad9ce83aabb5062a8003371802a0109c1bb2a
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Wed Jan 24 12:18:36 2018 -0600

    rsvg_parse_transform(): Don't copy the incoming string

 rust/src/transform.rs | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

commit 2ce259f973dbbfc73d5cdc6a9cb22dabd6d7294d
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Wed Jan 24 12:09:46 2018 -0600

    rsvg_length_parse(): Don't copy the incoming string

 rust/src/length.rs | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

commit a8872d438840308b89d777f4efbc16e00a9de863
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Wed Jan 24 11:32:16 2018 -0600

    rsvg_text_create_layout(): Don't copy the incoming string

 rust/src/text.rs | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

commit 4852538426ad71291dac72c24c727f01ed4c1c09
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Wed Jan 24 11:17:06 2018 -0600

    rsvg_xml_space_normalize(): Don't copy the incoming string

 rust/src/space.rs | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

commit 073fffdb81a9d133b9a37f9fcf689cdd31f9ba0d
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Wed Jan 24 11:13:52 2018 -0600

    rsvg_node_chars_append(): Don't copy the string; assume it comes validated from libxml2

 rust/src/chars.rs | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

commit 242d271f8f246868a2dad4362a2ad2da55087609
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Wed Jan 24 12:42:31 2018 -0600

    utf8_cstr(): Don't do UTF-8 validation (!)  Libxml2 does it for us.

 rust/src/util.rs | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

commit ff0c578ff30f13019f9e2ba9e63f46e9f91806d9
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Wed Jan 24 10:58:56 2018 -0600

    Factor out an util::utf8_cstr() to borrow a &str from a C char *

 rust/src/opacity.rs      |  5 ++---
 rust/src/property_bag.rs |  5 ++---
 rust/src/util.rs         | 16 ++++++++++++++++
 3 files changed, 20 insertions(+), 6 deletions(-)

commit 9b11cbb8c25aa5c80e532ff807fa52d7d5c5d8af
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Wed Jan 24 10:45:59 2018 -0600

    rsvg_css_parse_opacity(): Remove an allocation

 rust/src/opacity.rs | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

commit 94bbc26613af2189b9b83e37a0ab1b10af8a6577
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Wed Jan 24 10:23:14 2018 -0600

    PropertyBag: don't copy the resulting strings during lookup
    
    String copies in property_bag::lookup() were hurting performance a
    bit.  We want some things:
    
    * lookup() -> Option<&str> instead of lookup() -> Option<String>
      i.e. avoid copies for strings which will be short-lived anyway.
    
    * Don't expose property_bag::free() to callers; have automatic
      resource management.
    
    * Support property_bag::dup() for NodeSvg's special use case.
    
    The strategy is as follows.  We introduce an opaque PropertyBag
    struct, which is just a wrapper for the (RsvgPropertyBag *) that comes
    from the C side (typedef GHashTable RsvgPropertyBag).
    
    PropertyBag has dup() and lookup() methods, and an ffi() method to get
    the underlying pointer for special cases.
    
    We change all the users of the old RsvgPropertyBag pointers to use
    PropertyBag now.  NodeSvg no longer needs to impl Drop, since all it
    was doing was to call property_bag::free().
    
    The few places where the result of lookup() was meant to be
    long-lived, will actually copy the string now for their own purposes.

 rust/src/chars.rs        |  4 +--
 rust/src/clip_path.rs    |  4 +--
 rust/src/cnode.rs        |  8 ++---
 rust/src/gradient.rs     |  7 ++---
 rust/src/image.rs        |  9 +++---
 rust/src/marker.rs       |  5 ++--
 rust/src/mask.rs         |  4 +--
 rust/src/node.rs         | 17 ++++++-----
 rust/src/pattern.rs      |  7 ++---
 rust/src/property_bag.rs | 77 +++++++++++++++++++++++++++++++++---------------
 rust/src/shapes.rs       | 19 ++++++------
 rust/src/stop.rs         | 11 ++++---
 rust/src/structure.rs    | 46 ++++++++++-------------------
 13 files changed, 115 insertions(+), 103 deletions(-)

commit c1de6d5db7a9375e78bf72474718f8b88551842a
Author: Igor Gnatenko <ignatenko@src.gnome.org>
Date:   Wed Jan 24 16:55:05 2018 +0100

    rust: Update cssparser to 0.23
    
    Signed-off-by: Igor Gnatenko <ignatenko@src.gnome.org>

 rust/Cargo.lock | 12 ++++++------
 rust/Cargo.toml |  2 +-
 2 files changed, 7 insertions(+), 7 deletions(-)

commit 3425537f4acc4f5d59330661871854c0307294e9
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 14:21:09 2018 -0600

    Post-release version bump

 configure.ac | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 00e064575cd3fde407f826f0aa1fbc950c515307
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 13:57:05 2018 -0600

    Update NEWS for 2.42.1

 NEWS | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

commit 7899b2f14d7e8f4db0478bbca7d8f1636435a5f0
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 11:48:50 2018 -0600

    Cargo update

 rust/Cargo.lock | 34 +++++++++++++++++-----------------
 1 file changed, 17 insertions(+), 17 deletions(-)

commit bd2e64dcbf73927167f19a6e4ed496d8ed629f48
Merge: e0e5ead3 b8d7c408
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 11:44:22 2018 -0600

    gitlab#133 - More stringent tests of the path parser
    
    This is a general cleanup of the path parser:
    
    * Use Result<> throughout instead of returning bool from the functions
      that parse terminals and nonterminals.
    
    * Use a ParseError with an ErrorKind enum instead of storing strings
      in the error struct.
    
    * New tests for detecting invalid tokens or unexpected EOF in the
      right places.
    
    * Spec compliance nitpicking.
    
    https://gitlab.gnome.org/GNOME/librsvg/issues/133

commit b8d7c408bf0e3ddd838ecf23bb8f8367fa778805
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 11:19:02 2018 -0600

    parse_path: Use the absolute value of the rx/ry radii for elliptical arcs
    
    This is per https://www.w3.org/TR/SVG/implnote.html#ArcOutOfRangeParameters
    
    Since we don't need nonnegative_number() anymore, inline it in number().
    
    However, note that
    https://www.w3.org/TR/SVG2/paths.html#PathDataErrorHandling indicates
    "a non-positive radius value is an error", in SVG2.  At some point we
    have to make a decision whether to be permissive, or to actually make
    a distinction between parsing SVG1.1 and SVG2.

 rust/src/path_parser.rs | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)

commit 1c737d849cd5f7b2955d068743771c0ae926ae98
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 11:11:19 2018 -0600

    path_parser: Test the arc arguments

 rust/src/path_parser.rs | 78 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 78 insertions(+)

commit c6b248bef07747826bb5c62270e7948ef94ebd84
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 11:01:25 2018 -0600

    path_parser: Test smooth quadratic Bézier curveto args

 rust/src/path_parser.rs | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

commit 9447a1c3c48669aacb027e4c4be96624e3567363
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 10:59:28 2018 -0600

    path_parser: Test quadratic Bézier curveto arguments

 rust/src/path_parser.rs | 42 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

commit 121b069c7491e618c05cf576b2009284906ab40f
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 10:52:15 2018 -0600

    path_parser: Test smooth curveto args

 rust/src/path_parser.rs | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

commit d10a7a74f23a66ae3f66455bf5ac2a9adfc8f567
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 10:48:45 2018 -0600

    path_parser: Test curveto arguments

 rust/src/path_parser.rs | 66 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 66 insertions(+)

commit 25bb12542a1fd3853e0421a4debb306dacec489c
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 10:39:41 2018 -0600

    path_parser: Test for trailing commas after moveto and lineto

 rust/src/path_parser.rs | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

commit 20a96c47db37f3fcfa28911ad3f2b0bb94c27219
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 10:39:20 2018 -0600

    path_parser: Test vertical lineto args

 rust/src/path_parser.rs | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

commit 124b9f299bd64421d1abcfe8db628e9547a82941
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 10:35:02 2018 -0600

    path_parser: Test for trailing commas with missing arguments

 rust/src/path_parser.rs | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

commit fe1e6a48def4624fcddf55cb185e317c88f8939a
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 10:34:40 2018 -0600

    path_parser: Test horizontal lineto args

 rust/src/path_parser.rs | 13 +++++++++++++
 1 file changed, 13 insertions(+)

commit 6852fc1bd694b6fb52217a388cb5650e49ba32a6
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 10:29:41 2018 -0600

    path_parser: Test the number of arguments to lineto

 rust/src/path_parser.rs | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

commit ff34532b65c4aa029d7c4302ab6de87f66abbb06
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 10:29:28 2018 -0600

    path_parser: Test that closepath has no arguments

 rust/src/path_parser.rs | 9 +++++++++
 1 file changed, 9 insertions(+)

commit 5afd6401314324932066ff31867ea44240b125f3
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 10:29:04 2018 -0600

    path_parser: Test for trailing whitespace in the string

 rust/src/path_parser.rs | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

commit be2415d45c650d1e24a19e97adacbbcec6b16292
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 10:20:01 2018 -0600

    path_parser: Test that moveto gets the correct number of arguments

 rust/src/path_parser.rs | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

commit 1b871fd28d4efd8b8912545426a561150e612fe2
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 10:16:21 2018 -0600

    path_parser: Test that we detect broken/incomplete numbers when parsing

 rust/src/path_parser.rs | 43 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 42 insertions(+), 1 deletion(-)

commit c83e93979c35b0711521c47605f7ce6c59dce98c
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 10:09:51 2018 -0600

    path_parser: Make number() and flag() return UnexpectedEof when appropriate

 rust/src/path_parser.rs | 40 ++++++++++++++++++++++++++++++----------
 1 file changed, 30 insertions(+), 10 deletions(-)

commit 7ffc51fa1140ad6d21a126c518d0b90b99751156
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 09:56:35 2018 -0600

    path_parser: Test that the first command is a moveto

 rust/src/path_parser.rs | 8 ++++++++
 1 file changed, 8 insertions(+)

commit 4199af6529c0aef386fade35de2462a90c1b0407
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 09:48:03 2018 -0600

    path_parser: moveto(): Distinguish between EOF and an unexpected token
    
    The M/m commands are special, because the beginning of the path
    string *must* have one of them.  So, our moveto() has a different
    signature from e.g. line_to():
    
    - moveto() -> Result<(), ParseError> - means "parsed a Moveto or error"
    
    - line_to() -> Result<bool, ParseError> - means "found/didn't find a Lineto, or error"
    
    The functions which can look for optional commands (line_to(),
    curve_to(), etc.) return a bool in the Ok() case, to indicate whether
    they actually found their respective command.  Since the moveto() is
    not optional, it returns Ok(()), not Ok(bool).

 rust/src/path_parser.rs | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

commit d9fe094f89b1130664090c7b6e022b2984edc9be
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 09:47:18 2018 -0600

    path_parser: whitespace(): make this not return an error if we are at EOF

 rust/src/path_parser.rs | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

commit 5b65c538b67bcbc03ac54e3589cfff5b64ee6f64
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 09:46:17 2018 -0600

    path_parser: Don't advance the current position in getchar() if we get to EOF
    
    Thus, self.position will be the last character in the string.

 rust/src/path_parser.rs | 1 -
 1 file changed, 1 deletion(-)

commit 068d27c4b067e551e25728de468fce53bcbf83a7
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 09:44:26 2018 -0600

    path_parser: Fix invalid path syntax in a test

 rust/src/path_parser.rs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit e2e86ac87b47cd88087d746f7b638389eed0c2da
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 09:43:55 2018 -0600

    path_parser: test_parser(): Compare the expected results, both Ok and errors.

 rust/src/path_parser.rs | 48 ++++++++++++++++++++++--------------------------
 1 file changed, 22 insertions(+), 26 deletions(-)

commit 41dfff7f34240eb07360248470368f9f957e26ca
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 09:11:55 2018 -0600

    path_parser: test_parser(): Take an expected error position and error kind
    
    These are dummy arguments for now; we'll implement their usage in the
    next commits.

 rust/src/path_parser.rs | 248 ++++++++++++++++++++++++++++++++++++------------
 1 file changed, 186 insertions(+), 62 deletions(-)

commit 3bca74f9a58af7fedcb598c2e8c3f36095c10660
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 09:06:05 2018 -0600

    path_parser: Store an ErrorKind enum in ParseError instead of a string
    
    This will let us write tests for expected errors more easily.

 rust/src/path_parser.rs | 47 +++++++++++++++++++++++++++++++++++------------
 1 file changed, 35 insertions(+), 12 deletions(-)

commit bdd41820209e7a2815cb1a34e25fd4e3bbf500a9
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Tue Jan 23 08:44:26 2018 -0600

    NodePath: Store an Option<RsvgPathBuilder> instead of an empty builder

 rust/src/shapes.rs | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

commit a36569d1b52648847293d8bb0b857b8c663c0e5b
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Mon Jan 22 19:56:55 2018 -0600

    path_parser.rs: Big refactor; return Result<> at every step instead of bool
    
    In the recursive-descent parser, we used to return a bool from each
    function that expects a terminal or a nonterminal.
    
    Now we return a Result<_, ParseError> instead.  This makes the code
    much easier to read, since the "?" let us bail out at the appropriate
    times without having deeply-nested if statements.
    
    Also, fixed the handles_relative_moveto_lineto_lineto_abs_lineto()
    test - it had incorrect path syntax.

 rust/src/path_parser.rs | 719 +++++++++++++++++++++---------------------------
 1 file changed, 312 insertions(+), 407 deletions(-)

commit e0e5ead3bedb2b6feded6649e45cf4118e75f568
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Mon Jan 22 17:30:15 2018 -0600

    gitlab#187 - Don't crash when setting a gradient on a zero-sized object
    
    If the incoming bbox is zero-sized, we would create an all-zeros
    affine for the gradient's transformation.
    
    https://gitlab.gnome.org/GNOME/librsvg/issues/187

 rust/src/bbox.rs                                            |  5 +++++
 rust/src/gradient.rs                                        |  4 ++++
 .../render-crash/187-set-gradient-on-empty-path.svg         | 13 +++++++++++++
 3 files changed, 22 insertions(+)

commit 72ac1e586514913b9d7a820535549bc37b4e1dca
Merge: 5f97b230 88867e26
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Mon Jan 22 13:25:36 2018 -0600

    Merge remote-tracking branch 'origin/master'

commit 5f97b230214b640b67bf6f160c1303780e66de74
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Mon Jan 22 13:24:50 2018 -0600

    Normalize test files that differ; they all do so by a tiny amount

 .../reftests/svg1.1/filters-composite-02-b-ref.png  | Bin 15874 -> 15793 bytes
 .../reftests/svg1.1/paths-data-04-t-ref.png         | Bin 17850 -> 17856 bytes
 .../reftests/svg1.1/paths-data-05-t-ref.png         | Bin 15891 -> 15948 bytes
 .../reftests/svg1.1/paths-data-08-t-ref.png         | Bin 18892 -> 18899 bytes
 .../reftests/svg1.1/paths-data-09-t-ref.png         | Bin 17272 -> 17328 bytes
 .../reftests/svg1.1/paths-data-14-t-ref.png         | Bin 12377 -> 12373 bytes
 6 files changed, 0 insertions(+), 0 deletions(-)

commit 828d222fc76078ba4cb0ef2a6d1874fba3a5b19e
Merge: 3b2b9b01 f7ac35cf
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Mon Jan 22 13:18:53 2018 -0600

    gitlab#182 - Merge branch 'parse-transform-with-cssparser'
    
    We no longer use lalrpop to parse SVG's "transform" attribute.  We do
    it by hand with rust-cssparser.  Lalrpop currently suffers from having
    to recompile its regexps on each invocation of the parser, so SVGs
    with many "transform" attributes are parsed slower than they should
    be.
    
    The grammar for the "transform" attribute is very small, anyway, and
    doesn't require an industrial-strength parser.  Rust-cssparser is
    perfectly capable of dealing with it.
    
    https://gitlab.gnome.org/GNOME/librsvg/issues/182

commit f7ac35cf0e7f4a77eb5fd2ec3fc4875c5178f90e
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Mon Jan 22 12:42:07 2018 -0600

    Remove lalrpop-related files

 Makefile.am | 2 --
 1 file changed, 2 deletions(-)

commit 0298f282330eeaed14c3bbeb0ab34e64a2709e5d
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Mon Jan 22 12:32:18 2018 -0600

    Remove dead code

 rust/src/transform.rs | 17 -----------------
 1 file changed, 17 deletions(-)

commit 259b15f4ad8678a7d2296a8b461cb01422df8605
Author: Federico Mena Quintero <federico@gnome.org>
Date:   Mon Jan 22 12:30:53 2018 -0600

    Remove the lalrpop dependency.  We parse transforms with cssparser now.

