diff liboctave/idx-vector.cc @ 8379:ad8ed668e0a4

allow initialized local buffers
author Jaroslav Hajek <highegg@gmail.com>
date Sat, 06 Dec 2008 09:15:44 +0100
parents e3c9102431a9
children a99b9113c58c
line wrap: on
line diff
--- a/liboctave/idx-vector.cc	Sat Dec 06 07:48:35 2008 +0100
+++ b/liboctave/idx-vector.cc	Sat Dec 06 09:15:44 2008 +0100
@@ -34,6 +34,7 @@
 #include "Array.h"
 #include "Range.h"
 
+#include "oct-locbuf.h"
 #include "lo-error.h"
 #include "lo-mappers.h"
 
@@ -502,10 +503,7 @@
 idx_vector
 idx_vector::complement (octave_idx_type n) const
 {
-
-  bool *left = new bool[n];
-
-  std::fill (left, left + n, true);
+  OCTAVE_LOCAL_BUFFER_INIT (bool, left, n, true);
 
   octave_idx_type cnt = n;
 
@@ -522,8 +520,6 @@
   octave_idx_type len = cnt, *data = new octave_idx_type[len];
   for (octave_idx_type i = 0, j = 0; i < n; i++)
     if (left[i]) data[j++] = i;
-  
-  delete [] left;
 
   return new idx_vector_rep (data, len, 
                              len ? data[len-1]+1 : 0, 
@@ -539,9 +535,7 @@
     retval = true;
   else if (length (n) == n && extent(n) == n)
     {
-      bool *left = new bool[n];
-
-      std::fill (left, left + n, true);
+      OCTAVE_LOCAL_BUFFER_INIT (bool, left, n, true);
 
       retval = true;
 
@@ -557,7 +551,6 @@
             }
         }
 
-      delete [] left;
     }
 
   return retval;