changeset 21342:798273bbe551

avoid infinite recursion in SparseCholError * sparse-utils.cc (sparse_chol_error_internal): New function. (SparseCholError): Always define both variants to call sparse_chol_error_internal.
author John W. Eaton <jwe@octave.org>
date Wed, 24 Feb 2016 23:17:14 -0500
parents ae384d86196e
children 980abb267014
files liboctave/util/sparse-util.cc
diffstat 1 files changed, 12 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/liboctave/util/sparse-util.cc	Wed Feb 24 10:48:44 2016 -0800
+++ b/liboctave/util/sparse-util.cc	Wed Feb 24 23:17:14 2016 -0500
@@ -31,35 +31,33 @@
 #include "oct-sparse.h"
 #include "sparse-util.h"
 
-// FIXME: this overload is here due to API change in SuiteSparse (3.1 -> 3.2)
-
-void
-SparseCholError (int status, char *file, int line, char *message)
+static inline void
+sparse_chol_error_internal (int status, const char *file,
+                            int line, const char *message)
 {
-  SparseCholError (status, file, line, message);
-}
-
 #ifdef HAVE_CHOLMOD
-
-void
-SparseCholError (int status, const char *file, int line, const char *message)
-{
   // Ignore CHOLMOD_NOT_POSDEF, since we handle that in Fchol as an
   // error or exit status.
   if (status != CHOLMOD_NOT_POSDEF)
     (*current_liboctave_warning_with_id_handler)
       ("Octave:cholmod-message", "warning %i, at line %i in file %s: %s",
        status, line, file, message);
+#endif
 }
 
-#else
+// FIXME: this overload is here due to API change in SuiteSparse (3.1 -> 3.2)
 
 void
-SparseCholError (int status, const char *, int, const char *)
+SparseCholError (int status, char *file, int line, char *message)
 {
+  sparse_chol_error_internal (status, file, line, message);
 }
 
-#endif
+void
+SparseCholError (int status, const char *file, int line, const char *message)
+{
+  sparse_chol_error_internal (status, file, line, message);
+}
 
 int
 SparseCholPrint (const char *fmt, ...)