X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=ccode.cpp;h=c27644866c1f1d52c14a6f86b9f2002e9342d720;hb=291eaab661778e1fd02c5c22bc388daa97bb1d54;hp=56856a9e4ac545627068eec2786dfdb4c476d1fb;hpb=fdc1f6eaf544f695fc1511f24bddd7e6069c33ba;p=mothur.git diff --git a/ccode.cpp b/ccode.cpp index 56856a9..c276448 100644 --- a/ccode.cpp +++ b/ccode.cpp @@ -29,13 +29,18 @@ Ccode::Ccode(string filename, string temp, bool f, string mask, int win, int num #ifdef USE_MPI - char inFileName[mapInfo.length()]; + //char* inFileName = new char[mapInfo.length()]; + //memcpy(inFileName, mapInfo.c_str(), mapInfo.length()); + + char inFileName[1024]; strcpy(inFileName, mapInfo.c_str()); int outMode=MPI_MODE_CREATE|MPI_MODE_WRONLY; MPI_File_open(MPI_COMM_WORLD, inFileName, outMode, MPI_INFO_NULL, &outMap); //comm, filename, mode, info, filepointer + //delete inFileName; + int pid; MPI_Comm_rank(MPI_COMM_WORLD, &pid); //find out who we are @@ -44,10 +49,11 @@ Ccode::Ccode(string filename, string temp, bool f, string mask, int win, int num MPI_Status status; int length = outString.length(); - char buf2[length]; - strcpy(buf2, outString.c_str()); + char* buf2 = new char[length]; + memcpy(buf2, outString.c_str(), length); MPI_File_write_shared(outMap, buf2, length, MPI_CHAR, &status); + delete buf2; } #else @@ -235,21 +241,23 @@ int Ccode::print(MPI_File& out, MPI_File& outAcc) { MPI_Status status; int length = outString.length(); - char buf2[length]; - strcpy(buf2, outString.c_str()); + char* buf2 = new char[length]; + memcpy(buf2, outString.c_str(), length); MPI_File_write_shared(out, buf2, length, MPI_CHAR, &status); - + delete buf2; + if (results) { m->mothurOut(querySeq->getName() + " was found have at least one chimeric window."); m->mothurOutEndLine(); outAccString += querySeq->getName() + "\n"; MPI_Status statusAcc; length = outAccString.length(); - char buf[length]; - strcpy(buf, outAccString.c_str()); + char* buf = new char[length]; + memcpy(buf, outAccString.c_str(), length); MPI_File_write_shared(outAcc, buf, length, MPI_CHAR, &statusAcc); + delete buf; } //free memory @@ -267,10 +275,11 @@ int Ccode::printMapping(string& output) { try { MPI_Status status; int length = output.length(); - char buf[length]; - strcpy(buf, output.c_str()); + char* buf = new char[length]; + memcpy(buf, output.c_str(), length); MPI_File_write_shared(outMap, buf, length, MPI_CHAR, &status); + delete buf; } catch(exception& e) {