From 83fdb961a8cf7c93f8924093db7b2bfb7849ccbc Mon Sep 17 00:00:00 2001 From: abn Date: Mon, 1 Feb 2021 10:45:14 +0100 Subject: [PATCH] ParaMEDMemTest: bug fix: dangling pointer on stack. + indentation on MEDCouplingRemapperTest.cxx --- .../Test/MEDCouplingRemapperTest.cxx | 48 +++++++++---------- .../ParaMEDMEMTest_InterpKernelDEC.cxx | 21 ++++---- 2 files changed, 33 insertions(+), 36 deletions(-) diff --git a/src/MEDCoupling/Test/MEDCouplingRemapperTest.cxx b/src/MEDCoupling/Test/MEDCouplingRemapperTest.cxx index a29860af8..736d1fd30 100644 --- a/src/MEDCoupling/Test/MEDCouplingRemapperTest.cxx +++ b/src/MEDCoupling/Test/MEDCouplingRemapperTest.cxx @@ -1290,29 +1290,29 @@ void MEDCouplingRemapperTest::testBugNonRegression1() coordsSrc->decrRef(); connSrc->decrRef(); connISrc->decrRef(); // target DataArrayDouble *coordsTrg(DataArrayDouble::New()); -const double coordsTrgData[36]={-2,1.1547005383792521,264.85199999999998,-2,0.57735026918962618,264.85199999999998,-2.5,0.2886751345948132,264.85199999999998,-2.5,1.443375672974065,264.85199999999998,-3.0000000000000004,1.1547005383792526,264.85199999999998,-3.0000000000000004,0.57735026918962662,264.85199999999998,-2,1.1547005383792521,289.05200000000002,-2,0.57735026918962618,289.05200000000002,-2.5,0.2886751345948132,289.05200000000002,-2.5,1.443375672974065,289.05200000000002,-3.0000000000000004,1.1547005383792526,289.05200000000002,-3.0000000000000004,0.57735026918962662,289.05200000000002}; - coordsTrg->useArray(coordsTrgData,false,DeallocType::CPP_DEALLOC,12,3); - DataArrayIdType *connTrg=DataArrayIdType::New(); - const mcIdType connTrgData[44]={31,0,1,2,5,4,3,-1,7,6,9,10,11,8,-1,3,9,6,0,-1,4,10,9,3,-1,5,11,10,4,-1,2,8,11,5,-1,1,7,8,2,-1,0,6,7,1}; - connTrg->useArray(connTrgData,false,DeallocType::CPP_DEALLOC,44,1); - DataArrayIdType *connITrg=DataArrayIdType::New(); - const mcIdType connITrgData[2]={0,44}; - connITrg->useArray(connITrgData,false,DeallocType::CPP_DEALLOC,2,1); - MEDCouplingUMesh *trgMesh=MEDCouplingUMesh::New("target",3); - trgMesh->setCoords(coordsTrg); - trgMesh->setConnectivity(connTrg,connITrg,true); - coordsTrg->decrRef(); connTrg->decrRef(); connITrg->decrRef(); - // Go ! - const double valExpected(20.957814771583468); - MEDCouplingRemapper remapper; - remapper.setPrecision(1e-12); - remapper.setIntersectionType(INTERP_KERNEL::Triangulation); - CPPUNIT_ASSERT_EQUAL(1,remapper.prepare(srcMesh,trgMesh,"P0P0")); - std::vector > matrx(remapper.getCrudeMatrix()); - CPPUNIT_ASSERT_EQUAL(1,(int)matrx.size()); - CPPUNIT_ASSERT_EQUAL(1,(int)matrx[0].size()); - CPPUNIT_ASSERT_DOUBLES_EQUAL(valExpected,matrx[0][0],1e-13); - // - srcMesh->decrRef(); trgMesh->decrRef(); + const double coordsTrgData[36]={-2,1.1547005383792521,264.85199999999998,-2,0.57735026918962618,264.85199999999998,-2.5,0.2886751345948132,264.85199999999998,-2.5,1.443375672974065,264.85199999999998,-3.0000000000000004,1.1547005383792526,264.85199999999998,-3.0000000000000004,0.57735026918962662,264.85199999999998,-2,1.1547005383792521,289.05200000000002,-2,0.57735026918962618,289.05200000000002,-2.5,0.2886751345948132,289.05200000000002,-2.5,1.443375672974065,289.05200000000002,-3.0000000000000004,1.1547005383792526,289.05200000000002,-3.0000000000000004,0.57735026918962662,289.05200000000002}; + coordsTrg->useArray(coordsTrgData,false,DeallocType::CPP_DEALLOC,12,3); + DataArrayIdType *connTrg=DataArrayIdType::New(); + const mcIdType connTrgData[44]={31,0,1,2,5,4,3,-1,7,6,9,10,11,8,-1,3,9,6,0,-1,4,10,9,3,-1,5,11,10,4,-1,2,8,11,5,-1,1,7,8,2,-1,0,6,7,1}; + connTrg->useArray(connTrgData,false,DeallocType::CPP_DEALLOC,44,1); + DataArrayIdType *connITrg=DataArrayIdType::New(); + const mcIdType connITrgData[2]={0,44}; + connITrg->useArray(connITrgData,false,DeallocType::CPP_DEALLOC,2,1); + MEDCouplingUMesh *trgMesh=MEDCouplingUMesh::New("target",3); + trgMesh->setCoords(coordsTrg); + trgMesh->setConnectivity(connTrg,connITrg,true); + coordsTrg->decrRef(); connTrg->decrRef(); connITrg->decrRef(); + // Go ! + const double valExpected(20.957814771583468); + MEDCouplingRemapper remapper; + remapper.setPrecision(1e-12); + remapper.setIntersectionType(INTERP_KERNEL::Triangulation); + CPPUNIT_ASSERT_EQUAL(1,remapper.prepare(srcMesh,trgMesh,"P0P0")); + std::vector > matrx(remapper.getCrudeMatrix()); + CPPUNIT_ASSERT_EQUAL(1,(int)matrx.size()); + CPPUNIT_ASSERT_EQUAL(1,(int)matrx[0].size()); + CPPUNIT_ASSERT_DOUBLES_EQUAL(valExpected,matrx[0][0],1e-13); + // + srcMesh->decrRef(); trgMesh->decrRef(); } diff --git a/src/ParaMEDMEMTest/ParaMEDMEMTest_InterpKernelDEC.cxx b/src/ParaMEDMEMTest/ParaMEDMEMTest_InterpKernelDEC.cxx index 9267c6621..bc904c487 100644 --- a/src/ParaMEDMEMTest/ParaMEDMEMTest_InterpKernelDEC.cxx +++ b/src/ParaMEDMEMTest/ParaMEDMEMTest_InterpKernelDEC.cxx @@ -1475,11 +1475,10 @@ void ParaMEDMEMTest::testInterpKernelDECNonOverlapp_2D_P0P1P1P0() mesh->setCoords(myCoords); myCoords->decrRef(); paramesh=new ParaMESH(mesh,*target_group,targetMeshName); - DataArrayIdType *da=DataArrayIdType::New(); - const mcIdType globalNumberingP2[5]={0,1,2,3,4}; - da->useArray(globalNumberingP2,false,DeallocType::CPP_DEALLOC,5,1); + std::vector globalNumberingP2 = {0,1,2,3,4}; + MCAuto da=DataArrayIdType::New(); da->alloc(5,1); + std::copy(globalNumberingP2.begin(), globalNumberingP2.end(), da->rwBegin()); paramesh->setNodeGlobal(da); - da->decrRef(); } if(rank==3) { @@ -1496,11 +1495,10 @@ void ParaMEDMEMTest::testInterpKernelDECNonOverlapp_2D_P0P1P1P0() mesh->setCoords(myCoords); myCoords->decrRef(); paramesh=new ParaMESH(mesh,*target_group,targetMeshName); - DataArrayIdType *da=DataArrayIdType::New(); - const mcIdType globalNumberingP3[3]={4,2,5}; - da->useArray(globalNumberingP3,false,DeallocType::CPP_DEALLOC,3,1); + std::vector globalNumberingP3 = {4,2,5}; + MCAuto da=DataArrayIdType::New(); da->alloc(3,1); + std::copy(globalNumberingP3.begin(), globalNumberingP3.end(), da->rwBegin()); paramesh->setNodeGlobal(da); - da->decrRef(); } if(rank==4) { @@ -1518,11 +1516,10 @@ void ParaMEDMEMTest::testInterpKernelDECNonOverlapp_2D_P0P1P1P0() mesh->setCoords(myCoords); myCoords->decrRef(); paramesh=new ParaMESH(mesh,*target_group,targetMeshName); - DataArrayIdType *da=DataArrayIdType::New(); - const mcIdType globalNumberingP4[6]={3,6,7,4,8,5}; - da->useArray(globalNumberingP4,false,DeallocType::CPP_DEALLOC,6,1); + std::vector globalNumberingP4 = {3,6,7,4,8,5}; + MCAuto da=DataArrayIdType::New(); da->alloc(6,1); + std::copy(globalNumberingP4.begin(), globalNumberingP4.end(), da->rwBegin()); paramesh->setNodeGlobal(da); - da->decrRef(); } MEDCoupling::ComponentTopology comptopo; parafieldP0 = new ParaFIELD(ON_CELLS,NO_TIME,paramesh, comptopo); -- 2.39.2