]> www.ginac.de Git - ginac.git/blobdiff - ginac/ncmul.cpp
ncmul::eval(): don't write beyond the end of the vector.
[ginac.git] / ginac / ncmul.cpp
index f21f857266c44fb8731236706d885bbe3725f07f..adc36a524491ee2e72047d92281eafd5c1d22c72 100644 (file)
@@ -339,15 +339,15 @@ ex ncmul::eval(int level) const
        if (assocseq.empty()) return _ex1;
 
        // determine return types
-       unsignedvector rettypes;
-       rettypes.reserve(assocseq.size());
+       unsignedvector rettypes(assocseq.size());
        size_t i = 0;
        size_t count_commutative=0;
        size_t count_noncommutative=0;
        size_t count_noncommutative_composite=0;
        cit = assocseq.begin(); citend = assocseq.end();
        while (cit != citend) {
-               switch (rettypes[i] = cit->return_type()) {
+               rettypes[i] = cit->return_type();
+               switch (rettypes[i]) {
                case return_types::commutative:
                        count_commutative++;
                        break;