From 1893dabd78f6707d07882049997b7c2879bf02b9 Mon Sep 17 00:00:00 2001 From: Kirill Simonov Date: Sat, 29 Aug 2009 21:26:11 +0000 Subject: [PATCH] Do not update the raw buffer when not necessary (fixes #123). --- src/reader.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/reader.c b/src/reader.c index 6fc1a62..829e32d 100644 --- a/src/reader.c +++ b/src/reader.c @@ -141,6 +141,8 @@ yaml_parser_update_raw_buffer(yaml_parser_t *parser) YAML_DECLARE(int) yaml_parser_update_buffer(yaml_parser_t *parser, size_t length) { + int first = 1; + assert(parser->read_handler); /* Read handler must be set. */ /* If the EOF flag is set and the raw buffer is empty, do nothing. */ @@ -178,9 +180,12 @@ yaml_parser_update_buffer(yaml_parser_t *parser, size_t length) while (parser->unread < length) { - /* Fill the raw buffer. */ + /* Fill the raw buffer if necessary. */ - if (!yaml_parser_update_raw_buffer(parser)) return 0; + if (!first || parser->raw_buffer.pointer == parser->raw_buffer.last) { + if (!yaml_parser_update_raw_buffer(parser)) return 0; + } + first = 0; /* Decode the raw buffer. */ -- 2.45.1