From b58278f8e6a24da43e2f587c61b937288966a6ee Mon Sep 17 00:00:00 2001
From: "Vladimir V. Kisil" <kisilv@maths.leeds.ac.uk>
Date: Mon, 9 Sep 2019 14:43:16 +0100
Subject: [PATCH] Fix un-archiving of empty containers.

Signed-off-by: Vladimir V. Kisil <kisilv@maths.leeds.ac.uk>
---
 ginac/archive.cpp   | 2 +-
 ginac/container.h   | 2 +-
 ginac/expairseq.cpp | 1 -
 ginac/matrix.cpp    | 3 +--
 ginac/pseries.cpp   | 1 -
 5 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/ginac/archive.cpp b/ginac/archive.cpp
index eb50e865..15f9ea29 100644
--- a/ginac/archive.cpp
+++ b/ginac/archive.cpp
@@ -373,7 +373,7 @@ archive_node::archive_node_cit
 	for (auto i=props.end(); i!=props.begin();) {
 		--i;
 		if (i->name == name_atom)
-			return i;
+			return (++i);
 	}
 	return props.end();
 }
diff --git a/ginac/container.h b/ginac/container.h
index 960f0729..bf80e2a1 100644
--- a/ginac/container.h
+++ b/ginac/container.h
@@ -214,7 +214,7 @@ public:
 
 		archive_node::archive_node_cit first = n.find_first("seq");
 		archive_node::archive_node_cit last = n.find_last("seq");
-		++last;
+
 		this->reserve(this->seq, last - first);
 		for (archive_node::archive_node_cit i=first; i<last; ++i) {
 			ex e;
diff --git a/ginac/expairseq.cpp b/ginac/expairseq.cpp
index a1361532..f60a30ac 100644
--- a/ginac/expairseq.cpp
+++ b/ginac/expairseq.cpp
@@ -114,7 +114,6 @@ void expairseq::read_archive(const archive_node &n, lst &sym_lst)
 	inherited::read_archive(n, sym_lst);
 	auto first = n.find_first("rest");
 	auto last = n.find_last("coeff");
-	++last;
 	seq.reserve((last-first)/2);
 
 	for (auto loc = first; loc < last;) {
diff --git a/ginac/matrix.cpp b/ginac/matrix.cpp
index fb675060..e97dddae 100644
--- a/ginac/matrix.cpp
+++ b/ginac/matrix.cpp
@@ -142,8 +142,7 @@ void matrix::read_archive(const archive_node &n, lst &sym_lst)
 	m.pop_back();
 	auto first = n.find_first("m");
 	auto last = n.find_last("m");
-	++last;
-	for (auto i=first; i != last; ++i) {
+	for (auto i=first; i<last; ++i) {
 		ex e;
 		n.find_ex_by_loc(i, e, sym_lst);
 		m.push_back(e);
diff --git a/ginac/pseries.cpp b/ginac/pseries.cpp
index 4dba5129..c218f180 100644
--- a/ginac/pseries.cpp
+++ b/ginac/pseries.cpp
@@ -121,7 +121,6 @@ void pseries::read_archive(const archive_node &n, lst &sym_lst)
 	inherited::read_archive(n, sym_lst);
 	auto first = n.find_first("coeff");
 	auto last = n.find_last("power");
-	++last;
 	seq.reserve((last-first)/2);
 
 	for (auto loc = first; loc < last;) {
-- 
2.23.0

