diff --git a/Common/GmshMessage.cpp b/Common/GmshMessage.cpp index ece150274243e2b84bdcdb5282f331820ca70151..5bd3397a415b37332beea489816d6351d6fdc0cb 100644 --- a/Common/GmshMessage.cpp +++ b/Common/GmshMessage.cpp @@ -77,17 +77,6 @@ static int vsnprintf(char *str, size_t size, const char *fmt, va_list ap) void Msg::Init(int argc, char **argv) { - int sargc = argc; - char **sargv = argv; - for(int i = 0; i < argc; i++){ - std::string val(argv[i]); - if(val == "info" || val == "-info" || - val == "help" || val == "-help"){ - sargc = 0; - sargv = 0; - break; - } - } #if defined(HAVE_MPI) int flag; MPI_Initialized(&flag); @@ -97,7 +86,16 @@ void Msg::Init(int argc, char **argv) MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); #endif #if defined(HAVE_PETSC) + // prune argv from stuff that confuses PETSc + int sargc = 0; + char **sargv = new char*[argc]; + for(int i = 0; i < argc; i++){ + std::string val(argv[i]); + if(val != "-info" && val != "-help" && val != "-v") + sargv[sargc++] = argv[i]; + } PetscInitialize(&sargc, &sargv, PETSC_NULL, PETSC_NULL); + delete [] sargv; PetscPopSignalHandler(); #endif #if defined(HAVE_SLEPC)