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)?;