--- ncmul.cpp.orig 2010-09-30 18:49:14.241563514 +0430 +++ ncmul.cpp 2010-09-30 18:56:47.025579090 +0430 @@ -339,8 +339,13 @@ if (assocseq.empty()) return _ex1; // determine return types - unsignedvector rettypes; - rettypes.reserve(assocseq.size()); +#ifdef _MSC_VER + // For unfathomable reasons, the MSVC code crashes on accessing rettypes[0] if we just do reserve() + unsignedvector rettypes(assocseq.size()); +#else + unsignedvector rettypes; + rettypes.reserve(assocseq.size()); +#endif size_t i = 0; size_t count_commutative=0; size_t count_noncommutative=0;