From 322b311c2c2db820d9ca923e8035c85fa1a28340 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Thu, 26 Mar 2020 16:10:39 -0700 Subject: [PATCH] Clear QueryCursor state between exec calls --- lib/src/query.c | 3 +++ tags/src/c_lib.rs | 2 ++ tags/src/lib.rs | 1 + 3 files changed, 6 insertions(+) diff --git a/lib/src/query.c b/lib/src/query.c index 20c44fbb..87ab05b5 100644 --- a/lib/src/query.c +++ b/lib/src/query.c @@ -248,6 +248,9 @@ static CaptureListPool capture_list_pool_new() { static void capture_list_pool_reset(CaptureListPool *self) { self->usage_map = UINT32_MAX; + for (unsigned i = 0; i < 32; i++) { + array_clear(&self->list[i]); + } } static void capture_list_pool_delete(CaptureListPool *self) { diff --git a/tags/src/c_lib.rs b/tags/src/c_lib.rs index 1c255da0..0c367977 100644 --- a/tags/src/c_lib.rs +++ b/tags/src/c_lib.rs @@ -143,6 +143,8 @@ pub extern "C" fn ts_tagger_tag( let tag = if let Ok(tag) = tag { tag } else { + buffer.tags.clear(); + buffer.docs.clear(); return TSTagsError::Timeout; }; diff --git a/tags/src/lib.rs b/tags/src/lib.rs index c3642c8f..8d1853bb 100644 --- a/tags/src/lib.rs +++ b/tags/src/lib.rs @@ -212,6 +212,7 @@ impl TagsContext { self.parser .set_language(config.language) .map_err(|_| Error::InvalidLanguage)?; + self.parser.reset(); unsafe { self.parser.set_cancellation_flag(cancellation_flag) }; let tree = self.parser.parse(source, None).ok_or(Error::Cancelled)?;