diff liboctave/Sparse.cc @ 7322:40a17a87155e

[project @ 2007-12-18 21:32:10 by jwe]
author jwe
date Tue, 18 Dec 2007 21:34:26 +0000
parents df2c3977b0bf
children fcc6d853df9e
line wrap: on
line diff
--- a/liboctave/Sparse.cc	Tue Dec 18 03:48:04 2007 +0000
+++ b/liboctave/Sparse.cc	Tue Dec 18 21:34:26 2007 +0000
@@ -1537,7 +1537,7 @@
 	  for (octave_idx_type i = 0; i < n; i++)
 	    {
 	      if (i % new_nr == 0)
-		retval.xcidx(i % new_nr) = ic;
+		retval.xcidx(i / new_nr) = ic;
 
 	      octave_idx_type ii = idx_arg.elem (i);
 	      if (ii == 0)
@@ -1946,10 +1946,9 @@
 			start_nodes[ii] = i;
 		      else
 			{
-			  struct idx_node inode = nodes[node];
-			  while (inode.next)
-			    inode = *inode.next;
-			  inode.next = nodes + i;
+			  while (nodes[node].next)
+			    node = nodes[node].next->i;
+			  nodes[node].next = nodes + i;
 			}
 		    }
 
@@ -1974,8 +1973,8 @@
 			      
 				  while (true)
 				    {
-				      if (inode.i >= 0 && 
-					  idx_i.elem (inode.i) < nc)
+				      if (idx_i.elem (inode.i) >= 0 && 
+					  idx_i.elem (inode.i) < nr)
 					new_nzmx ++;
 				      if (inode.next == 0)
 					break;
@@ -2011,8 +2010,8 @@
 			      
 				  while (true)
 				    {
-				      if (inode.i >= 0 && 
-					  idx_i.elem (inode.i) < nc)
+				      if (idx_i.elem (inode.i) >= 0 && 
+					  idx_i.elem (inode.i) < nr)
 					{
 					  X [inode.i] = data (i);
 					  retval.xridx (kk++) = inode.i;