diff libinterp/octave-value/ov-struct.cc @ 30723:08b08b7f05b2

Replace direct calls to C library assert() with Octave specialty functions in libinterp/ (bug #61753) Define 4 new inline functions in error.h (panic_if, panic_unless, error_if, error_unless) that call either assert() or Octave's own error() function. Replace calls to assert() in code that maintains state and for which no recovery on detection of a problem is possible with calls to panic_XXX. Replace calls to assert() in interpreter code which could simply return to the Octave prompt when a problem is detected with calls to error_XXX. * error.h (panic_if, panic_unless): New functions which eventually call can call assert(). panic_if (COND) calls assert if COND is true. panic_unless (COND) calls assert if COND is false. * error.h (error_if, error_unless): New functions which eventually call can call Octave's error() function. error_if (COND) calls assert if COND is true. error_unless (COND) calls assert if COND is false. * cellfun.cc, daspk.cc, dasrt.cc, dassl.cc, data.cc, dot.cc, error.cc, graphics.cc, kron.cc, mex.cc, oct-map.cc, oct-stream.cc, pr-output.cc, schur.cc, stack-frame.cc, typecast.cc, variables.cc, ov-base.cc, ov-class.cc, ov-fcn-handle.cc, ov-struct.cc, ov-usr-fcn.cc, ov.h, ovl.cc, ops.h, profiler.cc, pt-classdef.cc, pt-eval.cc, pt-idx.cc, pt-pr-code.cc, pt-tm-const.cc, token.cc: Replace direct calls to C library assert() with Octave specialty functions.
author Arun Giridhar <arungiridhar@gmail.com> and Rik <rik@octave.org>
date Mon, 07 Feb 2022 21:47:53 -0800
parents ed17822e7662
children 32d2b6604a9f
line wrap: on
line diff
--- a/libinterp/octave-value/ov-struct.cc	Mon Feb 07 10:46:17 2022 +0900
+++ b/libinterp/octave-value/ov-struct.cc	Mon Feb 07 21:47:53 2022 -0800
@@ -91,7 +91,7 @@
 {
   Cell retval;
 
-  assert (idx.length () == 1);
+  panic_if (idx.length () != 1);
 
   std::string nm = idx(0).string_value ();
 
@@ -321,7 +321,7 @@
 
                 octave_value_list key_idx = *++p;
 
-                assert (key_idx.length () == 1);
+                panic_if (key_idx.length () != 1);
 
                 std::string key = key_idx(0).string_value ();
 
@@ -377,7 +377,7 @@
           {
             octave_value_list key_idx = idx.front ();
 
-            assert (key_idx.length () == 1);
+            panic_if (key_idx.length () != 1);
 
             std::string key = key_idx(0).string_value ();
 
@@ -443,7 +443,7 @@
             octave_value_list key_idx = *++p;
             octave_value_list idxf = idx.front ();
 
-            assert (key_idx.length () == 1);
+            panic_if (key_idx.length () != 1);
 
             std::string key = key_idx(0).string_value ();
 
@@ -514,7 +514,7 @@
       {
         octave_value_list key_idx = idx.front ();
 
-        assert (key_idx.length () == 1);
+        panic_if (key_idx.length () != 1);
 
         std::string key = key_idx(0).string_value ();
 
@@ -1107,7 +1107,7 @@
 {
   octave_value retval;
 
-  assert (idx.length () == 1);
+  panic_if (idx.length () != 1);
 
   std::string nm = idx(0).string_value ();
 
@@ -1228,7 +1228,7 @@
 
       octave_value_list key_idx = idx.front ();
 
-      assert (key_idx.length () == 1);
+      panic_if (key_idx.length () != 1);
 
       std::string key = key_idx(0).string_value ();
 
@@ -2114,7 +2114,7 @@
   // result dimensions.
   dim_vector rdv = vals.dims ().redim (nd);
 
-  assert (ext == rdv(dim));
+  panic_unless (ext == rdv(dim));
   if (nd == 2)
     {
       rdv(0) = rdv(1-dim);