# HG changeset patch # User Lachlan Andrew # Date 1467274837 -36000 # Node ID eb8667f2faac0369830a0f40d3e41bcff6600515 # Parent acdd8983d3084e462f319305faeb6d1defdaee56 Fix assignment to an property of an element of classdef array (bug #46660) * ov-classdef.cc (cdef_object_array::subsasgn): Pass at least two dimensions to Array::index (Array&, ...). diff -r acdd8983d308 -r eb8667f2faac libinterp/octave-value/ov-classdef.cc --- a/libinterp/octave-value/ov-classdef.cc Mon Jul 25 19:46:33 2016 -0400 +++ b/libinterp/octave-value/ov-classdef.cc Thu Jun 30 18:20:37 2016 +1000 @@ -1652,7 +1652,7 @@ bool is_scalar = true; - Array iv (dim_vector (1, ival.length ())); + Array iv (dim_vector (1, std::max (ival.length (), 2))); for (int i = 0; i < ival.length (); i++) { @@ -1675,6 +1675,11 @@ "array."); } + // Fill in trailing singleton dimensions so that + // array.index doesn't create a new blank entry (bug #46660). + for (int i = ival.length (); i < 2; i++) + iv(i) = 1; + Array a = array.index (iv, true); if (a.numel () != 1)