changeset 19821:4ae2987c5f66

avoid variable possibly clobbered by longjmp warning from GCC * __pchip_deriv__.cc (F__pchip_deriv__): Avoid GCC warning about variables possibly clobbered by longjmp.
author John W. Eaton <jwe@octave.org>
date Fri, 20 Feb 2015 04:36:39 -0500
parents d6652461dfbc
children 511b3ae4872b 52e625f0e361
files libinterp/corefcn/__pchip_deriv__.cc
diffstat 1 files changed, 12 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/__pchip_deriv__.cc	Fri Feb 20 04:08:04 2015 -0500
+++ b/libinterp/corefcn/__pchip_deriv__.cc	Fri Feb 20 04:36:39 2015 -0500
@@ -85,21 +85,21 @@
               return retval;
             }
 
-          const float *yvec = ymat.data ();
           FloatMatrix dmat (nyr, nyc);
-          float *dvec = dmat.fortran_vec ();
 
           octave_idx_type ierr;
           const octave_idx_type incfd = rows ? nyr : 1;
-          const octave_idx_type inc = rows ? 1 : nyr;
+          volatile const octave_idx_type inc = rows ? 1 : nyr;
+          volatile octave_idx_type k = 0;
 
           for (octave_idx_type i = (rows ? nyr : nyc); i > 0; i--)
             {
               F77_XFCN (pchim, PCHIM, (nx, xvec.data (),
-                                       yvec, dvec, incfd, &ierr));
+                                       ymat.data () + k * inc,
+                                       dmat.fortran_vec () + k * inc,
+                                       incfd, &ierr));
 
-              yvec += inc;
-              dvec += inc;
+              k++;
 
               if (ierr < 0)
                 {
@@ -132,21 +132,20 @@
               return retval;
             }
 
-          const double *yvec = ymat.data ();
           Matrix dmat (nyr, nyc);
-          double *dvec = dmat.fortran_vec ();
 
           octave_idx_type ierr;
           const octave_idx_type incfd = rows ? nyr : 1;
-          const octave_idx_type inc = rows ? 1 : nyr;
+          volatile const octave_idx_type inc = rows ? 1 : nyr;
+          volatile octave_idx_type k = 0;
 
           for (octave_idx_type i = (rows ? nyr : nyc); i > 0; i--)
             {
               F77_XFCN (dpchim, DPCHIM, (nx, xvec.data (),
-                                         yvec, dvec, incfd, &ierr));
-
-              yvec += inc;
-              dvec += inc;
+                                         ymat.data () + k * inc,
+                                         dmat.fortran_vec () + k * inc,
+                                         incfd, &ierr));
+              k++;
 
               if (ierr < 0)
                 {