Orion Poplawski 864212a
diff -up octave-3.8.2/libinterp/dldfcn/amd.cc.suitesparse octave-3.8.2/libinterp/dldfcn/amd.cc
Orion Poplawski 864212a
--- octave-3.8.2/libinterp/dldfcn/amd.cc.suitesparse	2014-08-06 11:57:55.000000000 -0600
Orion Poplawski d35fb0b
+++ octave-3.8.2/libinterp/dldfcn/amd.cc	2014-09-16 15:14:12.538123673 -0600
Orion Poplawski d35fb0b
@@ -24,7 +24,7 @@ along with Octave; see the file COPYING.
Orion Poplawski d35fb0b
 // in the help of the functions.
Orion Poplawski d35fb0b
 
Orion Poplawski d35fb0b
 #ifdef HAVE_CONFIG_H
Orion Poplawski d35fb0b
-#include <config.h>
Orion Poplawski d35fb0b
+#include "config.h"
Orion Poplawski d35fb0b
 #endif
Orion Poplawski d35fb0b
 
Orion Poplawski d35fb0b
 #include <cstdlib>
Orion Poplawski 864212a
@@ -164,11 +164,11 @@ The author of the code itself is Timothy
Orion Poplawski 864212a
 
Orion Poplawski 864212a
               // FIXME: how can we manage the memory allocation of amd
Orion Poplawski 864212a
               //        in a cleaner manner?
Orion Poplawski 864212a
-              amd_malloc = malloc;
Orion Poplawski 864212a
-              amd_free = free;
Orion Poplawski 864212a
-              amd_calloc = calloc;
Orion Poplawski 864212a
-              amd_realloc = realloc;
Orion Poplawski 864212a
-              amd_printf = printf;
Orion Poplawski 864212a
+              suitesparse_assign_function(malloc_func, amd_malloc, malloc);
Orion Poplawski 864212a
+              suitesparse_assign_function(free_func, amd_free, free);
Orion Poplawski 864212a
+              suitesparse_assign_function(calloc_func, amd_calloc, calloc);
Orion Poplawski 864212a
+              suitesparse_assign_function(realloc_func, amd_realloc, realloc);
Orion Poplawski 864212a
+              suitesparse_assign_function(printf_func, amd_printf, printf);
Orion Poplawski 864212a
 
Orion Poplawski 864212a
               octave_idx_type result = AMD_NAME (_order) (n_col, cidx, ridx, P,
Orion Poplawski 864212a
                                                           Control, Info);
Orion Poplawski 864212a
diff -up octave-3.8.2/libinterp/dldfcn/symbfact.cc.suitesparse octave-3.8.2/libinterp/dldfcn/symbfact.cc
Orion Poplawski 864212a
--- octave-3.8.2/libinterp/dldfcn/symbfact.cc.suitesparse	2014-08-06 11:54:15.000000000 -0600
Orion Poplawski d35fb0b
+++ octave-3.8.2/libinterp/dldfcn/symbfact.cc	2014-09-16 15:22:41.924557046 -0600
Orion Poplawski d35fb0b
@@ -22,7 +22,7 @@ along with Octave; see the file COPYING.
Orion Poplawski d35fb0b
 */
Orion Poplawski d35fb0b
 
Orion Poplawski d35fb0b
 #ifdef HAVE_CONFIG_H
Orion Poplawski d35fb0b
-#include <config.h>
Orion Poplawski d35fb0b
+#include "config.h"
Orion Poplawski d35fb0b
 #endif
Orion Poplawski d35fb0b
 
Orion Poplawski d35fb0b
 #include "SparseCmplxCHOL.h"
Orion Poplawski d35fb0b
@@ -114,17 +114,15 @@ factorization as determined by @var{typ}
Orion Poplawski 864212a
   if (spu == 0.)
Orion Poplawski 864212a
     {
Orion Poplawski 864212a
       cm->print = -1;
Orion Poplawski 864212a
-      cm->print_function = 0;
Orion Poplawski 864212a
+      suitesparse_assign_function(printf_func, cm->print_function, 0);
Orion Poplawski 864212a
     }
Orion Poplawski 864212a
   else
Orion Poplawski 864212a
     {
Orion Poplawski 864212a
       cm->print = static_cast<int> (spu) + 2;
Orion Poplawski 864212a
-      cm->print_function =&SparseCholPrint;
Orion Poplawski 864212a
+      suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
Orion Poplawski 864212a
     }
Orion Poplawski 864212a
 
Orion Poplawski 864212a
   cm->error_handler = &SparseCholError;
Orion Poplawski 864212a
-  cm->complex_divide = CHOLMOD_NAME(divcomplex);
Orion Poplawski 864212a
-  cm->hypotenuse = CHOLMOD_NAME(hypot);
Orion Poplawski 864212a
 
Orion Poplawski 864212a
   double dummy;
Orion Poplawski 864212a
   cholmod_sparse Astore;
Orion Poplawski 864212a
diff -up octave-3.8.2/liboctave/array/CSparse.cc.suitesparse octave-3.8.2/liboctave/array/CSparse.cc
Orion Poplawski 864212a
--- octave-3.8.2/liboctave/array/CSparse.cc.suitesparse	2014-08-06 11:57:55.000000000 -0600
Orion Poplawski d35fb0b
+++ octave-3.8.2/liboctave/array/CSparse.cc	2014-09-16 15:22:16.310677157 -0600
Orion Poplawski d35fb0b
@@ -23,7 +23,7 @@ along with Octave; see the file COPYING.
Orion Poplawski d35fb0b
 */
Orion Poplawski d35fb0b
 
Orion Poplawski d35fb0b
 #ifdef HAVE_CONFIG_H
Orion Poplawski d35fb0b
-#include <config.h>
Orion Poplawski d35fb0b
+#include "config.h"
Orion Poplawski d35fb0b
 #endif
Orion Poplawski d35fb0b
 
Orion Poplawski d35fb0b
 #include <cfloat>
Orion Poplawski d35fb0b
@@ -5664,17 +5664,15 @@ SparseComplexMatrix::fsolve (MatrixType
Orion Poplawski 864212a
           if (spu == 0.)
Orion Poplawski 864212a
             {
Orion Poplawski 864212a
               cm->print = -1;
Orion Poplawski 864212a
-              cm->print_function = 0;
Orion Poplawski 864212a
+              suitesparse_assign_function(printf_func, cm->print_function, 0);
Orion Poplawski 864212a
             }
Orion Poplawski 864212a
           else
Orion Poplawski 864212a
             {
Orion Poplawski 864212a
               cm->print = static_cast<int> (spu) + 2;
Orion Poplawski 864212a
-              cm->print_function =&SparseCholPrint;
Orion Poplawski 864212a
+              suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
Orion Poplawski 864212a
             }
Orion Poplawski 864212a
 
Orion Poplawski 864212a
           cm->error_handler = &SparseCholError;
Orion Poplawski 864212a
-          cm->complex_divide = CHOLMOD_NAME(divcomplex);
Orion Poplawski 864212a
-          cm->hypotenuse = CHOLMOD_NAME(hypot);
Orion Poplawski 864212a
 
Orion Poplawski 864212a
           cm->final_ll = true;
Orion Poplawski 864212a
 
Orion Poplawski d35fb0b
@@ -5907,17 +5905,15 @@ SparseComplexMatrix::fsolve (MatrixType
Orion Poplawski 864212a
           if (spu == 0.)
Orion Poplawski 864212a
             {
Orion Poplawski 864212a
               cm->print = -1;
Orion Poplawski 864212a
-              cm->print_function = 0;
Orion Poplawski 864212a
+              suitesparse_assign_function(printf_func, cm->print_function, 0);
Orion Poplawski 864212a
             }
Orion Poplawski 864212a
           else
Orion Poplawski 864212a
             {
Orion Poplawski 864212a
               cm->print = static_cast<int> (spu) + 2;
Orion Poplawski 864212a
-              cm->print_function =&SparseCholPrint;
Orion Poplawski 864212a
+              suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
Orion Poplawski 864212a
             }
Orion Poplawski 864212a
 
Orion Poplawski 864212a
           cm->error_handler = &SparseCholError;
Orion Poplawski 864212a
-          cm->complex_divide = CHOLMOD_NAME(divcomplex);
Orion Poplawski 864212a
-          cm->hypotenuse = CHOLMOD_NAME(hypot);
Orion Poplawski 864212a
 
Orion Poplawski 864212a
           cm->final_ll = true;
Orion Poplawski 864212a
 
Orion Poplawski d35fb0b
@@ -6198,17 +6194,15 @@ SparseComplexMatrix::fsolve (MatrixType
Orion Poplawski 864212a
           if (spu == 0.)
Orion Poplawski 864212a
             {
Orion Poplawski 864212a
               cm->print = -1;
Orion Poplawski 864212a
-              cm->print_function = 0;
Orion Poplawski 864212a
+              suitesparse_assign_function(printf_func, cm->print_function, 0);
Orion Poplawski 864212a
             }
Orion Poplawski 864212a
           else
Orion Poplawski 864212a
             {
Orion Poplawski 864212a
               cm->print = static_cast<int> (spu) + 2;
Orion Poplawski 864212a
-              cm->print_function =&SparseCholPrint;
Orion Poplawski 864212a
+              suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
Orion Poplawski 864212a
             }
Orion Poplawski 864212a
 
Orion Poplawski 864212a
           cm->error_handler = &SparseCholError;
Orion Poplawski 864212a
-          cm->complex_divide = CHOLMOD_NAME(divcomplex);
Orion Poplawski 864212a
-          cm->hypotenuse = CHOLMOD_NAME(hypot);
Orion Poplawski 864212a
 
Orion Poplawski 864212a
           cm->final_ll = true;
Orion Poplawski 864212a
 
Orion Poplawski d35fb0b
@@ -6420,17 +6414,15 @@ SparseComplexMatrix::fsolve (MatrixType
Orion Poplawski 864212a
           if (spu == 0.)
Orion Poplawski 864212a
             {
Orion Poplawski 864212a
               cm->print = -1;
Orion Poplawski 864212a
-              cm->print_function = 0;
Orion Poplawski 864212a
+              suitesparse_assign_function(printf_func, cm->print_function, 0);
Orion Poplawski 864212a
             }
Orion Poplawski 864212a
           else
Orion Poplawski 864212a
             {
Orion Poplawski 864212a
               cm->print = static_cast<int> (spu) + 2;
Orion Poplawski 864212a
-              cm->print_function =&SparseCholPrint;
Orion Poplawski 864212a
+              suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
Orion Poplawski 864212a
             }
Orion Poplawski 864212a
 
Orion Poplawski 864212a
           cm->error_handler = &SparseCholError;
Orion Poplawski 864212a
-          cm->complex_divide = CHOLMOD_NAME(divcomplex);
Orion Poplawski 864212a
-          cm->hypotenuse = CHOLMOD_NAME(hypot);
Orion Poplawski 864212a
 
Orion Poplawski 864212a
           cm->final_ll = true;
Orion Poplawski 864212a
 
Orion Poplawski 864212a
diff -up octave-3.8.2/liboctave/array/dSparse.cc.suitesparse octave-3.8.2/liboctave/array/dSparse.cc
Orion Poplawski 864212a
--- octave-3.8.2/liboctave/array/dSparse.cc.suitesparse	2014-08-06 11:57:55.000000000 -0600
Orion Poplawski d35fb0b
+++ octave-3.8.2/liboctave/array/dSparse.cc	2014-09-16 15:22:01.253747787 -0600
Orion Poplawski d35fb0b
@@ -23,7 +23,7 @@ along with Octave; see the file COPYING.
Orion Poplawski d35fb0b
 */
Orion Poplawski d35fb0b
 
Orion Poplawski d35fb0b
 #ifdef HAVE_CONFIG_H
Orion Poplawski d35fb0b
-#include <config.h>
Orion Poplawski d35fb0b
+#include "config.h"
Orion Poplawski d35fb0b
 #endif
Orion Poplawski d35fb0b
 
Orion Poplawski d35fb0b
 #include <cfloat>
Orion Poplawski d35fb0b
@@ -5866,17 +5866,15 @@ SparseMatrix::fsolve (MatrixType &mattyp
Orion Poplawski 864212a
           if (spu == 0.)
Orion Poplawski 864212a
             {
Orion Poplawski 864212a
               cm->print = -1;
Orion Poplawski 864212a
-              cm->print_function = 0;
Orion Poplawski 864212a
+              suitesparse_assign_function(printf_func, cm->print_function, 0);
Orion Poplawski 864212a
             }
Orion Poplawski 864212a
           else
Orion Poplawski 864212a
             {
Orion Poplawski 864212a
               cm->print = static_cast<int> (spu) + 2;
Orion Poplawski 864212a
-              cm->print_function =&SparseCholPrint;
Orion Poplawski 864212a
+              suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
Orion Poplawski 864212a
             }
Orion Poplawski 864212a
 
Orion Poplawski 864212a
           cm->error_handler = &SparseCholError;
Orion Poplawski 864212a
-          cm->complex_divide = CHOLMOD_NAME(divcomplex);
Orion Poplawski 864212a
-          cm->hypotenuse = CHOLMOD_NAME(hypot);
Orion Poplawski 864212a
 
Orion Poplawski 864212a
           cm->final_ll = true;
Orion Poplawski 864212a
 
Orion Poplawski d35fb0b
@@ -6083,17 +6081,15 @@ SparseMatrix::fsolve (MatrixType &mattyp
Orion Poplawski 864212a
           if (spu == 0.)
Orion Poplawski 864212a
             {
Orion Poplawski 864212a
               cm->print = -1;
Orion Poplawski 864212a
-              cm->print_function = 0;
Orion Poplawski 864212a
+              suitesparse_assign_function(printf_func, cm->print_function, 0);
Orion Poplawski 864212a
             }
Orion Poplawski 864212a
           else
Orion Poplawski 864212a
             {
Orion Poplawski 864212a
               cm->print = static_cast<int> (spu) + 2;
Orion Poplawski 864212a
-              cm->print_function =&SparseCholPrint;
Orion Poplawski 864212a
+              suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
Orion Poplawski 864212a
             }
Orion Poplawski 864212a
 
Orion Poplawski 864212a
           cm->error_handler = &SparseCholError;
Orion Poplawski 864212a
-          cm->complex_divide = CHOLMOD_NAME(divcomplex);
Orion Poplawski 864212a
-          cm->hypotenuse = CHOLMOD_NAME(hypot);
Orion Poplawski 864212a
 
Orion Poplawski 864212a
           cm->final_ll = true;
Orion Poplawski 864212a
 
Orion Poplawski d35fb0b
@@ -6345,17 +6341,15 @@ SparseMatrix::fsolve (MatrixType &mattyp
Orion Poplawski 864212a
           if (spu == 0.)
Orion Poplawski 864212a
             {
Orion Poplawski 864212a
               cm->print = -1;
Orion Poplawski 864212a
-              cm->print_function = 0;
Orion Poplawski 864212a
+              suitesparse_assign_function(printf_func, cm->print_function, 0);
Orion Poplawski 864212a
             }
Orion Poplawski 864212a
           else
Orion Poplawski 864212a
             {
Orion Poplawski 864212a
               cm->print = static_cast<int> (spu) + 2;
Orion Poplawski 864212a
-              cm->print_function =&SparseCholPrint;
Orion Poplawski 864212a
+              suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
Orion Poplawski 864212a
             }
Orion Poplawski 864212a
 
Orion Poplawski 864212a
           cm->error_handler = &SparseCholError;
Orion Poplawski 864212a
-          cm->complex_divide = CHOLMOD_NAME(divcomplex);
Orion Poplawski 864212a
-          cm->hypotenuse = CHOLMOD_NAME(hypot);
Orion Poplawski 864212a
 
Orion Poplawski 864212a
           cm->final_ll = true;
Orion Poplawski 864212a
 
Orion Poplawski d35fb0b
@@ -6579,17 +6573,15 @@ SparseMatrix::fsolve (MatrixType &mattyp
Orion Poplawski 864212a
           if (spu == 0.)
Orion Poplawski 864212a
             {
Orion Poplawski 864212a
               cm->print = -1;
Orion Poplawski 864212a
-              cm->print_function = 0;
Orion Poplawski 864212a
+              suitesparse_assign_function(printf_func, cm->print_function, 0);
Orion Poplawski 864212a
             }
Orion Poplawski 864212a
           else
Orion Poplawski 864212a
             {
Orion Poplawski 864212a
               cm->print = static_cast<int> (spu) + 2;
Orion Poplawski 864212a
-              cm->print_function =&SparseCholPrint;
Orion Poplawski 864212a
+              suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
Orion Poplawski 864212a
             }
Orion Poplawski 864212a
 
Orion Poplawski 864212a
           cm->error_handler = &SparseCholError;
Orion Poplawski 864212a
-          cm->complex_divide = CHOLMOD_NAME(divcomplex);
Orion Poplawski 864212a
-          cm->hypotenuse = CHOLMOD_NAME(hypot);
Orion Poplawski 864212a
 
Orion Poplawski 864212a
           cm->final_ll = true;
Orion Poplawski 864212a
 
Orion Poplawski 864212a
diff -up octave-3.8.2/liboctave/numeric/sparse-base-chol.cc.suitesparse octave-3.8.2/liboctave/numeric/sparse-base-chol.cc
Orion Poplawski 864212a
--- octave-3.8.2/liboctave/numeric/sparse-base-chol.cc.suitesparse	2014-08-06 11:54:14.000000000 -0600
Orion Poplawski d35fb0b
+++ octave-3.8.2/liboctave/numeric/sparse-base-chol.cc	2014-09-16 15:23:24.252358549 -0600
Orion Poplawski d35fb0b
@@ -22,7 +22,7 @@ along with Octave; see the file COPYING.
Orion Poplawski d35fb0b
 */
Orion Poplawski d35fb0b
 
Orion Poplawski d35fb0b
 #ifdef HAVE_CONFIG_H
Orion Poplawski d35fb0b
-#include <config.h>
Orion Poplawski d35fb0b
+#include "config.h"
Orion Poplawski d35fb0b
 #endif
Orion Poplawski d35fb0b
 
Orion Poplawski d35fb0b
 #include "sparse-base-chol.h"
Orion Poplawski d35fb0b
@@ -105,17 +105,15 @@ sparse_base_chol
Orion Poplawski 864212a
   if (spu == 0.)
Orion Poplawski 864212a
     {
Orion Poplawski 864212a
       cm->print = -1;
Orion Poplawski 864212a
-      cm->print_function = 0;
Orion Poplawski 864212a
+      suitesparse_assign_function(printf_func, cm->print_function, 0);
Orion Poplawski 864212a
     }
Orion Poplawski 864212a
   else
Orion Poplawski 864212a
     {
Orion Poplawski 864212a
       cm->print = static_cast<int> (spu) + 2;
Orion Poplawski 864212a
-      cm->print_function =&SparseCholPrint;
Orion Poplawski 864212a
+      suitesparse_assign_function(printf_func, cm->print_function, &SparseCholPrint);
Orion Poplawski 864212a
     }
Orion Poplawski 864212a
 
Orion Poplawski 864212a
   cm->error_handler = &SparseCholError;
Orion Poplawski 864212a
-  cm->complex_divide = CHOLMOD_NAME(divcomplex);
Orion Poplawski 864212a
-  cm->hypotenuse = CHOLMOD_NAME(hypot);
Orion Poplawski 864212a
 
Orion Poplawski 864212a
   cm->final_asis = false;
Orion Poplawski 864212a
   cm->final_super = false;
Orion Poplawski 864212a
diff -up octave-3.8.2/liboctave/util/oct-sparse.h.suitesparse octave-3.8.2/liboctave/util/oct-sparse.h
Orion Poplawski 864212a
--- octave-3.8.2/liboctave/util/oct-sparse.h.suitesparse	2014-08-06 11:54:15.000000000 -0600
Orion Poplawski d35fb0b
+++ octave-3.8.2/liboctave/util/oct-sparse.h	2014-09-16 15:14:13.417119567 -0600
Orion Poplawski 864212a
@@ -94,4 +94,12 @@ along with Octave; see the file COPYING.
Orion Poplawski 864212a
 #endif
Orion Poplawski 864212a
 #endif
Orion Poplawski 864212a
 
Orion Poplawski 864212a
+// Cope with new suitesparse versions
Orion Poplawski 864212a
+//
Orion Poplawski 864212a
+#if defined( SUITESPARSE_VERSION ) && SUITESPARSE_VERSION >= SUITESPARSE_VER_CODE(4,3)
Orion Poplawski 864212a
+#define suitesparse_assign_function(f_name,f_var,f_assign) (SuiteSparse_config.f_name = f_assign)
Orion Poplawski 864212a
+#else
Orion Poplawski 864212a
+#define suitesparse_assign_function(f_name,f_var,f_assign) (f_var = f_assign)
Orion Poplawski 864212a
+#endif
Orion Poplawski 864212a
+
Orion Poplawski 864212a
 #endif