File: 0014-add-some-version-check-and-clear.patch

package info (click to toggle)
siconos 4.4.0%2Bdfsg-5
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 78,600 kB
  • sloc: cpp: 160,976; ansic: 129,998; fortran: 33,051; python: 20,958; xml: 1,244; sh: 385; makefile: 318
file content (80 lines) | stat: -rw-r--r-- 2,400 bytes parent folder | download | duplicates (3)
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
From: Stephen Sinclair <radarsat1@gmail.com>
Date: Wed, 11 Sep 2022 11:41:00 +0000
Subject: Fix crash in QPConvex test

From a commit of upstream repository after release.

commit 88e449bd1ad9ebcbcae2e3d466656d82efdc42c2
Author: Maurice Bremond <Maurice.Bremond@inria.fr>
Date:   Mon Sep 12 10:50:32 2022 +0200

    [numerics] add some version check & clear on top of some NM_*

diff --git a/numerics/src/tools/NumericsMatrix.c b/numerics/src/tools/NumericsMatrix.c
index a957e4726..6beeb757b 100644
--- a/numerics/src/tools/NumericsMatrix.c
+++ b/numerics/src/tools/NumericsMatrix.c
@@ -2881,7 +2881,18 @@ NumericsSparseMatrix* numericsSparseMatrix(NumericsMatrix* A)
 
 CSparseMatrix* NM_triplet(NumericsMatrix* A)
 {
+  assert(A);
+
+  if(numericsSparseMatrix(A)->triplet && (NM_max_version(A) >
+                                          NSM_version(numericsSparseMatrix(A),
+                                                      NSM_TRIPLET)))
+  {
+    NM_clearTriplet(A);
+  }
+
   if(!numericsSparseMatrix(A)->triplet)
+//    ||
+//     NSM_version(numericsSparseMatrix(A), NSM_TRIPLET) < NSM_max_version(numericsSparseMatrix(A)))
   {
     switch(A->storageType)
     {
@@ -2996,6 +3007,16 @@ CSparseMatrix* NM_triplet(NumericsMatrix* A)
 
 CSparseMatrix* NM_half_triplet(NumericsMatrix* A)
 {
+  assert(A);
+
+  if(numericsSparseMatrix(A)->half_triplet &&
+     (NM_max_version(A) >
+      NSM_version(numericsSparseMatrix(A),
+                  NSM_HALF_TRIPLET)))
+  {
+    NM_clearHalfTriplet(A);
+  }
+
   if(!numericsSparseMatrix(A)->half_triplet)
   {
     switch(A->storageType)
@@ -3113,6 +3134,13 @@ CSparseMatrix* NM_csc(NumericsMatrix *A)
   DEBUG_BEGIN("NM_csc(NumericsMatrix *A)\n");
   assert(A);
 
+  if(numericsSparseMatrix(A)->csc && (NM_max_version(A) >
+                                      NSM_version(numericsSparseMatrix(A),
+                                                  NSM_CSC)))
+  {
+    NM_clearCSC(A);
+  }
+
   if(!numericsSparseMatrix(A)->csc)
   {
     assert(A->matrix2);
@@ -3184,6 +3212,13 @@ CSparseMatrix* NM_csr(NumericsMatrix *A)
 {
   assert(A);
 
+  if(numericsSparseMatrix(A)->csr && (NM_max_version(A) >
+                                      NSM_version(numericsSparseMatrix(A),
+                                                  NSM_CSR)))
+  {
+    NM_clearCSR(A);
+  }
+
   if(!numericsSparseMatrix(A)->csr)
   {
     assert(A->matrix2);