From 4a63e961ea7aa8e88e12a4fddf2219609596971d Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Tue, 9 Feb 2016 14:42:27 +0000 Subject: [PATCH] much faster is_a_svg --- TODO | 11 ----------- libvips/foreign/svgload.c | 37 ++++++++++++++++++++++++++++++++----- 2 files changed, 32 insertions(+), 16 deletions(-) diff --git a/TODO b/TODO index 56a52e6a..76f60d85 100644 --- a/TODO +++ b/TODO @@ -1,16 +1,5 @@ -- make vips_foreign_load_svg_is_a_buffer() much faster - - test for first line starts " #include #include +#include #include #include @@ -359,13 +360,39 @@ G_DEFINE_TYPE( VipsForeignLoadSvgBuffer, vips_foreign_load_svg_buffer, static gboolean vips_foreign_load_svg_is_a_buffer( const void *buf, size_t len ) { - RsvgHandle *page; + char *str = (char *) buf; - /* Ouch! So slow!! This can easily end up parsing the entire document. + int i; + + /* SVG documents are very freeform. They normally look like: + * + * + *