diff options
-rw-r--r-- | lout/misc.hh | 12 | ||||
-rw-r--r-- | test/notsosimplevector.cc | 9 |
2 files changed, 15 insertions, 6 deletions
diff --git a/lout/misc.hh b/lout/misc.hh index f4d0f8de..f877c879 100644 --- a/lout/misc.hh +++ b/lout/misc.hh @@ -327,10 +327,12 @@ private: { if (startExtra != -1) { numMain += numExtra; + resizeMain (); memmove (arrayMain + startExtra + numExtra, arrayMain + startExtra, (numMain - (startExtra + numExtra)) * sizeof (T)); - memmove (arrayMain + startExtra, arrayExtra1, numExtra); + memmove (arrayMain + startExtra, arrayExtra1, numExtra * sizeof (T)); startExtra = -1; + numExtra = 0; } } @@ -387,10 +389,10 @@ public: assert (numInsert >= 0); // The following lines are a simple (but inefficient) replacement. - setSize (numMain + numInsert); - memmove (arrayMain + index + numInsert, arrayMain + index, - (numMain - index - numInsert) * sizeof (T)); - return; + //setSize (numMain + numInsert); + //memmove (arrayMain + index + numInsert, arrayMain + index, + // (numMain - index - numInsert) * sizeof (T)); + //return; if (this->startExtra == -1) { // simple case diff --git a/test/notsosimplevector.cc b/test/notsosimplevector.cc index 8d0d2657..228734ee 100644 --- a/test/notsosimplevector.cc +++ b/test/notsosimplevector.cc @@ -3,11 +3,18 @@ static void print (lout::misc::NotSoSimpleVector<int> *v) { for (int i = 0; i < v->size(); i++) { + // Uncomment für debugging, after making the respective members public. + //if (v->startExtra != -1 && i == v->startExtra + v->numExtra) + // printf (" ]"); if (i > 0) printf (", "); + //if (i == v->startExtra) + // printf ("[ "); + printf ("%d", v->get(i)); } - printf ("\n"); + + printf (" (%d elements)\n", v->size ()); } int main (int argc, char *argv[]) |