diff --git a/libcorpus2/io/reader.cpp b/libcorpus2/io/reader.cpp
index 7a636a30828d12a323ec7cdaf3230f03fab96603..4dbfc106a36f0a51c8035e18f9b1e117e9c3519e 100644
--- a/libcorpus2/io/reader.cpp
+++ b/libcorpus2/io/reader.cpp
@@ -54,6 +54,8 @@ Token* BufferedChunkReader::get_next_token()
 		if (s != NULL) {
 			std::copy(s->tokens().begin(), s->tokens().end(),
 					std::back_inserter(token_buf_));
+			s->tokens().clear();
+			delete s;
 		} else {
 			more = false;
 		}
@@ -76,6 +78,8 @@ Sentence* BufferedChunkReader::get_next_sentence()
 		if (c != NULL) {
 			std::copy(c->sentences().begin(), c->sentences().end(),
 					std::back_inserter(sentence_buf_));
+			c->sentences().clear();
+			delete c;
 		} else {
 			more = false;
 		}