Package: psi4 / 1:1.2.1-2

dfhelper_crash_fix.patch Patch series | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
From e286fcebfbbfe59e53acd1c2d45a48c9bb87474f Mon Sep 17 00:00:00 2001
From: Raimondas Galvelis <r.galvelis@acellera.com>
Date: Fri, 31 Aug 2018 22:01:30 +0200
Subject: [PATCH] Fix list decrement in psi::DFHelper::identify_order

---
 psi4/src/psi4/lib3index/dfhelper.cc | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

Index: psi4/psi4/src/psi4/lib3index/dfhelper.cc
===================================================================
--- psi4.orig/psi4/src/psi4/lib3index/dfhelper.cc
+++ psi4/psi4/src/psi4/lib3index/dfhelper.cc
@@ -1515,8 +1515,9 @@ std::pair<size_t, size_t> DFHelper::iden
         bool on = false;
         size_t st = 0;
         std::string str = sorted_spaces_[i].first;
-        std::list<std::string>::iterator itr, end;
-        for (itr = needs.begin(), end = needs.end(); itr != end; ++itr) {
+
+        auto itr = needs.begin();
+        while (itr != needs.end()) {
             op = 0;
             op = (!(std::get<0>(transf_[*itr]).compare(str)) ? 1 : op);
             op = (!(std::get<1>(transf_[*itr]).compare(str)) ? 2 : op);
@@ -1533,9 +1534,9 @@ std::pair<size_t, size_t> DFHelper::iden
                 largest = (largest < small ? small : largest);
                 order_.push_back(*itr);
                 st++;
-                needs.erase(itr);
-                itr--;
-            }
+                itr = needs.erase(itr);
+            } else
+                itr++;
         }
         if (st > 0) {
             strides_.push_back(st);