view src/stable-octave-3-fixes.patch @ 3720:5d0ed3ca5910

new patch for stable-octave package
author John W. Eaton <jwe@octave.org>
date Sun, 05 Oct 2014 11:12:39 -0400
parents 992be3109433
children
line wrap: on
line source

# HG changeset patch
# User John W. Eaton <jwe@octave.org>
# Date 1412519047 14400
#      Sun Oct 05 10:24:07 2014 -0400
# Branch stable
# Node ID 3ffb8f53e94019084321d065390f4d4e215fd465
# Parent  432ffa35de136a5dfd2a717a598750b62e6944f9
use correct HDF5 size for octave_idx_type on Windows-64 (bug #43101)

* ls-hdf5.h: Define H5T_NATIVE_IDX to H5T_NATIVE_INT64 when using
64-bit indexing.

diff --git a/libinterp/corefcn/ls-hdf5.h b/libinterp/corefcn/ls-hdf5.h
--- a/libinterp/corefcn/ls-hdf5.h
+++ b/libinterp/corefcn/ls-hdf5.h
@@ -204,7 +204,7 @@
                       const char *attr_name, void *buf);
 
 #ifdef USE_64_BIT_IDX_T
-#define H5T_NATIVE_IDX H5T_NATIVE_LONG
+#define H5T_NATIVE_IDX H5T_NATIVE_INT64
 #else
 #define H5T_NATIVE_IDX H5T_NATIVE_INT
 #endif
# HG changeset patch
# User John W. Eaton <jwe@octave.org>
# Date 1412520111 14400
#      Sun Oct 05 10:41:51 2014 -0400
# Branch stable
# Node ID 0279c601b49ce5d539b1ae938e8ec562b63f1ced
# Parent  3ffb8f53e94019084321d065390f4d4e215fd465
compute for loop indices consistently with range element results

* pt-eval.cc (tree_evaluator::visit_simple_for_command): Use
Range::elem instead of compuiting elements directly.  This change
appears to fix obscure test failures in eig.cc-tst on 64-bit Windows
systems.  See also task #13313.

diff --git a/libinterp/parse-tree/pt-eval.cc b/libinterp/parse-tree/pt-eval.cc
--- a/libinterp/parse-tree/pt-eval.cc
+++ b/libinterp/parse-tree/pt-eval.cc
@@ -336,21 +336,10 @@
         Range rng = rhs.range_value ();
 
         octave_idx_type steps = rng.nelem ();
-        double b = rng.base ();
-        double increment = rng.inc ();
 
         for (octave_idx_type i = 0; i < steps; i++)
           {
-            // Use multiplication here rather than declaring a
-            // temporary variable outside the loop and using
-            //
-            //   tmp_val += increment
-            //
-            // to avoid problems with limited precision.  Also, this
-            // is consistent with the way Range::matrix_value is
-            // implemented.
-
-            octave_value val (b + i * increment);
+            octave_value val (rng.elem (i));
 
             ult.assign (octave_value::op_asn_eq, val);