aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lout/misc.hh12
-rw-r--r--test/notsosimplevector.cc9
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[])