external/coinmp: Various UBSan issues
...as seen during CppunitTest_sc_solverobj, > CglPreProcess.cpp:6432:21: runtime error: null pointer passed as argument 2, which is declared to never be null > /usr/include/string.h:48:28: note: nonnull attribute specified here > #0 in CglPreProcess::addCutGenerator(CglCutGenerator*) at <null> (engine/instdir/program/libCgl.so.1 +0x2e858a) > #1 in CbcMain1(int, char const**, CbcModel&, int (*)(CbcModel*, int), CbcSolverUsefulData&) at <null> (engine/instdir/program/libCbcSolver.so.3 +0x1dd308) > #2 in CbcSolveProblem(void*, PROBLEMINFO*, OPTIONINFO*, int) at <null> (engine/instdir/program/libCoinMP.so.1 +0x2c880) > #3 in CbcOptimizeProblem at <null> (engine/instdir/program/libCoinMP.so.1 +0x2fdeb) > #4 in (anonymous namespace)::CoinMPSolver::solve() at engine/sc/source/solver/CoinMPSolver.cxx:325:23 > #5 in ScSolverSettings::solve() at engine/sc/source/ui/unoobj/solveruno.cxx:902:14 > #6 in sc_apitest::ScSolverSettingsObj::testXSolverSettings() at engine/sc/qa/extras/scsolverobj.cxx:121:19 and > CbcModel.cpp:11504:39: runtime error: null pointer passed as argument 2, which is declared to never be null > /usr/include/string.h:48:28: note: nonnull attribute specified here > #0 in CbcModel::findIntegers(bool, int) at <null> (engine/instdir/program/libCbc.so.3 +0x2e0857) > #1 in CbcMain1(int, char const**, CbcModel&, int (*)(CbcModel*, int), CbcSolverUsefulData&) at <null> (engine/instdir/program/libCbcSolver.so.3 +0x1dd7f3) > #2 in CbcSolveProblem(void*, PROBLEMINFO*, OPTIONINFO*, int) at <null> (engine/instdir/program/libCoinMP.so.1 +0x2c880) > #3 in CbcOptimizeProblem at <null> (engine/instdir/program/libCoinMP.so.1 +0x2fdeb) > #4 in (anonymous namespace)::CoinMPSolver::solve() at engine/sc/source/solver/CoinMPSolver.cxx:325:23 > #5 in ScSolverSettings::solve() at engine/sc/source/ui/unoobj/solveruno.cxx:902:14 > #6 in sc_apitest::ScSolverSettingsObj::testXSolverSettings() at engine/sc/qa/extras/scsolverobj.cxx:121:19 and > CglPreProcess.cpp:1721:36: runtime error: 1.79769e+308 is outside the range of representable values of type 'int' > #0 in CglPreProcess::preProcessNonDefault(OsiSolverInterface&, int, int, int) at <null> (engine/instdir/program/libCgl.so.1 +0x2f71a6) > #1 in CbcMain1(int, char const**, CbcModel&, int (*)(CbcModel*, int), CbcSolverUsefulData&) at <null> (engine/instdir/program/libCbcSolver.so.3 +0x1e4777) > #2 in CbcSolveProblem(void*, PROBLEMINFO*, OPTIONINFO*, int) at <null> (engine/instdir/program/libCoinMP.so.1 +0x2c880) > #3 in CbcOptimizeProblem at <null> (engine/instdir/program/libCoinMP.so.1 +0x2fdeb) > #4 in (anonymous namespace)::CoinMPSolver::solve() at engine/sc/source/solver/CoinMPSolver.cxx:325:23 > #5 in ScSolverSettings::solve() at engine/sc/source/ui/unoobj/solveruno.cxx:902:14 > #6 in sc_apitest::ScSolverSettingsObj::testXSolverSettings() at engine/sc/qa/extras/scsolverobj.cxx:121:19 and > CglPreProcess.cpp:1722:36: runtime error: -1.79769e+308 is outside the range of representable values of type 'int' > #0 in CglPreProcess::preProcessNonDefault(OsiSolverInterface&, int, int, int) at <null> (engine/instdir/program/libCgl.so.1 +0x2f71d1) > #1 in CbcMain1(int, char const**, CbcModel&, int (*)(CbcModel*, int), CbcSolverUsefulData&) at <null> (engine/instdir/program/libCbcSolver.so.3 +0x1e4777) > #2 in CbcSolveProblem(void*, PROBLEMINFO*, OPTIONINFO*, int) at <null> (engine/instdir/program/libCoinMP.so.1 +0x2c880) > #3 in CbcOptimizeProblem at <null> (engine/instdir/program/libCoinMP.so.1 +0x2fdeb) > #4 in (anonymous namespace)::CoinMPSolver::solve() at engine/sc/source/solver/CoinMPSolver.cxx:325:23 > #5 in ScSolverSettings::solve() at engine/sc/source/ui/unoobj/solveruno.cxx:902:14 > #6 in sc_apitest::ScSolverSettingsObj::testXSolverSettings() at engine/sc/qa/extras/scsolverobj.cxx:121:19 and > CbcModel.cpp:7134:24: runtime error: null pointer passed as argument 2, which is declared to never be null > /usr/include/string.h:48:28: note: nonnull attribute specified here > #0 in CbcModel::addHeuristic(CbcHeuristic*, char const*, int) at <null> (engine/instdir/program/libCbc.so.3 +0x3e315b) > #1 in doHeuristics(CbcModel*, int, CbcOrClpParam*, int, int, int) at <null> (engine/instdir/program/libCbcSolver.so.3 +0x2ac48e) > #2 in CbcMain1(int, char const**, CbcModel&, int (*)(CbcModel*, int), CbcSolverUsefulData&) at <null> (engine/instdir/program/libCbcSolver.so.3 +0x1d8334) > #3 in CbcSolveProblem(void*, PROBLEMINFO*, OPTIONINFO*, int) at <null> (engine/instdir/program/libCoinMP.so.1 +0x2c880) > #4 in CbcOptimizeProblem at <null> (engine/instdir/program/libCoinMP.so.1 +0x2fdeb) > #5 in (anonymous namespace)::CoinMPSolver::solve() at engine/sc/source/solver/CoinMPSolver.cxx:325:23 > #6 in ScSolverSettings::solve() at engine/sc/source/ui/unoobj/solveruno.cxx:902:14 > #7 in sc_apitest::ScSolverSettingsObj::testXSolverSettings() at engine/sc/qa/extras/scsolverobj.cxx:121:19 and > CbcModel.cpp:7110:24: runtime error: null pointer passed as argument 2, which is declared to never be null > /usr/include/string.h:48:28: note: nonnull attribute specified here > #0 in CbcModel::addCutGenerator(CglCutGenerator*, int, char const*, bool, bool, bool, int, int, int) at <null> (engine/instdir/program/libCbc.so.3 +0x349035) > #1 in CbcMain1(int, char const**, CbcModel&, int (*)(CbcModel*, int), CbcSolverUsefulData&) at <null> (engine/instdir/program/libCbcSolver.so.3 +0x1d8efb) > #2 in CbcSolveProblem(void*, PROBLEMINFO*, OPTIONINFO*, int) at <null> (engine/instdir/program/libCoinMP.so.1 +0x2c880) > #3 in CbcOptimizeProblem at <null> (engine/instdir/program/libCoinMP.so.1 +0x2fdeb) > #4 in (anonymous namespace)::CoinMPSolver::solve() at engine/sc/source/solver/CoinMPSolver.cxx:325:23 > #5 in ScSolverSettings::solve() at engine/sc/source/ui/unoobj/solveruno.cxx:902:14 > #6 in sc_apitest::ScSolverSettingsObj::testXSolverSettings() at engine/sc/qa/extras/scsolverobj.cxx:121:19 and > CbcModel.cpp:7119:30: runtime error: null pointer passed as argument 2, which is declared to never be null > /usr/include/string.h:48:28: note: nonnull attribute specified here > #0 in CbcModel::addCutGenerator(CglCutGenerator*, int, char const*, bool, bool, bool, int, int, int) at <null> (engine/instdir/program/libCbc.so.3 +0x34921e) > #1 in CbcMain1(int, char const**, CbcModel&, int (*)(CbcModel*, int), CbcSolverUsefulData&) at <null> (engine/instdir/program/libCbcSolver.so.3 +0x1d8efb) > #2 in CbcSolveProblem(void*, PROBLEMINFO*, OPTIONINFO*, int) at <null> (engine/instdir/program/libCoinMP.so.1 +0x2c880) > #3 in CbcOptimizeProblem at <null> (engine/instdir/program/libCoinMP.so.1 +0x2fdeb) > #4 in (anonymous namespace)::CoinMPSolver::solve() at engine/sc/source/solver/CoinMPSolver.cxx:325:23 > #5 in ScSolverSettings::solve() at engine/sc/source/ui/unoobj/solveruno.cxx:902:14 > #6 in sc_apitest::ScSolverSettingsObj::testXSolverSettings() at engine/sc/qa/extras/scsolverobj.cxx:121:19 and > CglKnapsackCover.cpp:3908:36: runtime error: -1.79769e+308 is outside the range of representable values of type 'int' > #0 in CglKnapsackCover::createCliques(OsiSolverInterface&, int, int, bool) at <null> (engine/instdir/program/libCgl.so.1 +0x1af0ab) > #1 in CbcCutGenerator::CbcCutGenerator(CbcModel*, CglCutGenerator*, int, char const*, bool, bool, bool, int, int, int, int) at <null> (engine/instdir/program/libCbc.so.3 +0x7fb17) > #2 in CbcModel::addCutGenerator(CglCutGenerator*, int, char const*, bool, bool, bool, int, int, int) at <null> (engine/instdir/program/libCbc.so.3 +0x348ace) > #3 in CbcMain1(int, char const**, CbcModel&, int (*)(CbcModel*, int), CbcSolverUsefulData&) at <null> (engine/instdir/program/libCbcSolver.so.3 +0x1d9c2d) > #4 in CbcSolveProblem(void*, PROBLEMINFO*, OPTIONINFO*, int) at <null> (engine/instdir/program/libCoinMP.so.1 +0x2c880) > #5 in CbcOptimizeProblem at <null> (engine/instdir/program/libCoinMP.so.1 +0x2fdeb) > #6 in (anonymous namespace)::CoinMPSolver::solve() at engine/sc/source/solver/CoinMPSolver.cxx:325:23 > #7 in ScSolverSettings::solve() at engine/sc/source/ui/unoobj/solveruno.cxx:902:14 > #8 in sc_apitest::ScSolverSettingsObj::testXSolverSettings() at engine/sc/qa/extras/scsolverobj.cxx:121:19 and > CbcModel.cpp:9355:93: runtime error: division by zero > #0 in CbcModel::solveWithCuts(OsiCuts&, int, CbcNode*) at <null> (engine/instdir/program/libCbc.so.3 +0x371e89) > #1 in CbcModel::branchAndBound(int) at <null> (engine/instdir/program/libCbc.so.3 +0x33f172) > #2 in CbcHeuristic::smallBranchAndBound(OsiSolverInterface*, int, double*, double&, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>) const at <null> (engine/instdir/program/libCbc.so.3 +0x10643e) > #3 in CbcHeuristicFPump::solution(double&, double*) at <null> (engine/instdir/program/libCbc.so.3 +0x1a25ed) > #4 in CbcModel::doHeuristicsAtRoot(int) at <null> (engine/instdir/program/libCbc.so.3 +0x34fd61) > #5 in CbcModel::branchAndBound(int) at <null> (engine/instdir/program/libCbc.so.3 +0x306fec) > #6 in CbcMain1(int, char const**, CbcModel&, int (*)(CbcModel*, int), CbcSolverUsefulData&) at <null> (engine/instdir/program/libCbcSolver.so.3 +0x215c37) > #7 in CbcSolveProblem(void*, PROBLEMINFO*, OPTIONINFO*, int) at <null> (engine/instdir/program/libCoinMP.so.1 +0x2c880) > #8 in CbcOptimizeProblem at <null> (engine/instdir/program/libCoinMP.so.1 +0x2fdeb) > #9 in (anonymous namespace)::CoinMPSolver::solve() at engine/sc/source/solver/CoinMPSolver.cxx:325:23 > #10 in ScSolverSettings::solve() at engine/sc/source/ui/unoobj/solveruno.cxx:902:14 > #11 in sc_apitest::ScSolverSettingsObj::testXSolverSettings() at engine/sc/qa/extras/scsolverobj.cxx:121:19 and > CbcModel.cpp:9332:49: runtime error: division by zero > #0 in CbcModel::solveWithCuts(OsiCuts&, int, CbcNode*) at <null> (engine/instdir/program/libCbc.so.3 +0x3760c7) > #1 in CbcModel::branchAndBound(int) at <null> (engine/instdir/program/libCbc.so.3 +0x33f172) > #2 in CbcHeuristic::smallBranchAndBound(OsiSolverInterface*, int, double*, double&, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>) const at <null> (engine/instdir/program/libCbc.so.3 +0x10643e) > #3 in CbcHeuristicFPump::solution(double&, double*) at <null> (engine/instdir/program/libCbc.so.3 +0x1a25ed) > #4 in CbcModel::doHeuristicsAtRoot(int) at <null> (engine/instdir/program/libCbc.so.3 +0x34fd61) > #5 in CbcModel::branchAndBound(int) at <null> (engine/instdir/program/libCbc.so.3 +0x306fec) > #6 in CbcMain1(int, char const**, CbcModel&, int (*)(CbcModel*, int), CbcSolverUsefulData&) at <null> (engine/instdir/program/libCbcSolver.so.3 +0x215c37) > #7 in CbcSolveProblem(void*, PROBLEMINFO*, OPTIONINFO*, int) at <null> (engine/instdir/program/libCoinMP.so.1 +0x2c880) > #8 in CbcOptimizeProblem at <null> (engine/instdir/program/libCoinMP.so.1 +0x2fdeb) > #9 in (anonymous namespace)::CoinMPSolver::solve() at engine/sc/source/solver/CoinMPSolver.cxx:325:23 > #10 in ScSolverSettings::solve() at engine/sc/source/ui/unoobj/solveruno.cxx:902:14 > #11 in sc_apitest::ScSolverSettingsObj::testXSolverSettings() at engine/sc/qa/extras/scsolverobj.cxx:121:19 and > ClpSimplex.cpp:2560:34: runtime error: applying non-zero offset 120 to null pointer > #0 in ClpSimplex::gutsOfCopy(ClpSimplex const&) at <null> (engine/instdir/program/libClp.so.1 +0x6ab776) > #1 in ClpSimplex::ClpSimplex(ClpSimplex const&, int) at <null> (engine/instdir/program/libClp.so.1 +0x6a912b) > #2 in ClpPresolve::gutsOfPresolvedModel(ClpSimplex*, double, bool, int, bool, bool, char const*, char const*) at <null> (engine/instdir/program/libClp.so.1 +0x59c16c) > #3 in OsiClpSolverInterface::initialSolve() at <null> (engine/instdir/program/libOsiClp.so.1 +0xa53f) > #4 in CglPreProcess::postProcess(OsiSolverInterface&, bool) at <null> (engine/instdir/program/libCgl.so.1 +0x3600f1) > #5 in CbcHeuristic::smallBranchAndBound(OsiSolverInterface*, int, double*, double&, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>) const at <null> (engine/instdir/program/libCbc.so.3 +0x107ac1) > #6 in CbcHeuristicFPump::solution(double&, double*) at <null> (engine/instdir/program/libCbc.so.3 +0x1a25ed) > #7 in CbcModel::doHeuristicsAtRoot(int) at <null> (engine/instdir/program/libCbc.so.3 +0x34fd61) > #8 in CbcModel::branchAndBound(int) at <null> (engine/instdir/program/libCbc.so.3 +0x306fec) > #9 in CbcMain1(int, char const**, CbcModel&, int (*)(CbcModel*, int), CbcSolverUsefulData&) at <null> (engine/instdir/program/libCbcSolver.so.3 +0x215c37) > #10 in CbcSolveProblem(void*, PROBLEMINFO*, OPTIONINFO*, int) at <null> (engine/instdir/program/libCoinMP.so.1 +0x2c880) > #11 in CbcOptimizeProblem at <null> (engine/instdir/program/libCoinMP.so.1 +0x2fdeb) > #12 in (anonymous namespace)::CoinMPSolver::solve() at engine/sc/source/solver/CoinMPSolver.cxx:325:23 > #13 in ScSolverSettings::solve() at engine/sc/source/ui/unoobj/solveruno.cxx:902:14 > #14 in sc_apitest::ScSolverSettingsObj::testXSolverSettings() at engine/sc/qa/extras/scsolverobj.cxx:121:19 and > ClpSimplex.cpp:2563:34: runtime error: applying non-zero offset 120 to null pointer > #0 in ClpSimplex::gutsOfCopy(ClpSimplex const&) at <null> (engine/instdir/program/libClp.so.1 +0x6ab771) > #1 in ClpSimplex::ClpSimplex(ClpSimplex const&, int) at <null> (engine/instdir/program/libClp.so.1 +0x6a912b) > #2 in ClpPresolve::gutsOfPresolvedModel(ClpSimplex*, double, bool, int, bool, bool, char const*, char const*) at <null> (engine/instdir/program/libClp.so.1 +0x59c16c) > #3 in OsiClpSolverInterface::initialSolve() at <null> (engine/instdir/program/libOsiClp.so.1 +0xa53f) > #4 in CglPreProcess::postProcess(OsiSolverInterface&, bool) at <null> (engine/instdir/program/libCgl.so.1 +0x3600f1) > #5 in CbcHeuristic::smallBranchAndBound(OsiSolverInterface*, int, double*, double&, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>) const at <null> (engine/instdir/program/libCbc.so.3 +0x107ac1) > #6 in CbcHeuristicFPump::solution(double&, double*) at <null> (engine/instdir/program/libCbc.so.3 +0x1a25ed) > #7 in CbcModel::doHeuristicsAtRoot(int) at <null> (engine/instdir/program/libCbc.so.3 +0x34fd61) > #8 in CbcModel::branchAndBound(int) at <null> (engine/instdir/program/libCbc.so.3 +0x306fec) > #9 in CbcMain1(int, char const**, CbcModel&, int (*)(CbcModel*, int), CbcSolverUsefulData&) at <null> (engine/instdir/program/libCbcSolver.so.3 +0x215c37) > #10 in CbcSolveProblem(void*, PROBLEMINFO*, OPTIONINFO*, int) at <null> (engine/instdir/program/libCoinMP.so.1 +0x2c880) > #11 in CbcOptimizeProblem at <null> (engine/instdir/program/libCoinMP.so.1 +0x2fdeb) > #12 in (anonymous namespace)::CoinMPSolver::solve() at engine/sc/source/solver/CoinMPSolver.cxx:325:23 > #13 in ScSolverSettings::solve() at engine/sc/source/ui/unoobj/solveruno.cxx:902:14 > #14 in sc_apitest::ScSolverSettingsObj::testXSolverSettings() at engine/sc/qa/extras/scsolverobj.cxx:121:19 and > ClpSimplex.cpp:2567:37: runtime error: applying non-zero offset 120 to null pointer > #0 in ClpSimplex::gutsOfCopy(ClpSimplex const&) at <null> (engine/instdir/program/libClp.so.1 +0x6ab751) > #1 in ClpSimplex::ClpSimplex(ClpSimplex const&, int) at <null> (engine/instdir/program/libClp.so.1 +0x6a912b) > #2 in ClpPresolve::gutsOfPresolvedModel(ClpSimplex*, double, bool, int, bool, bool, char const*, char const*) at <null> (engine/instdir/program/libClp.so.1 +0x59c16c) > #3 in OsiClpSolverInterface::initialSolve() at <null> (engine/instdir/program/libOsiClp.so.1 +0xa53f) > #4 in CglPreProcess::postProcess(OsiSolverInterface&, bool) at <null> (engine/instdir/program/libCgl.so.1 +0x3600f1) > #5 in CbcHeuristic::smallBranchAndBound(OsiSolverInterface*, int, double*, double&, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>) const at <null> (engine/instdir/program/libCbc.so.3 +0x107ac1) > #6 in CbcHeuristicFPump::solution(double&, double*) at <null> (engine/instdir/program/libCbc.so.3 +0x1a25ed) > #7 in CbcModel::doHeuristicsAtRoot(int) at <null> (engine/instdir/program/libCbc.so.3 +0x34fd61) > #8 in CbcModel::branchAndBound(int) at <null> (engine/instdir/program/libCbc.so.3 +0x306fec) > #9 in CbcMain1(int, char const**, CbcModel&, int (*)(CbcModel*, int), CbcSolverUsefulData&) at <null> (engine/instdir/program/libCbcSolver.so.3 +0x215c37) > #10 in CbcSolveProblem(void*, PROBLEMINFO*, OPTIONINFO*, int) at <null> (engine/instdir/program/libCoinMP.so.1 +0x2c880) > #11 in CbcOptimizeProblem at <null> (engine/instdir/program/libCoinMP.so.1 +0x2fdeb) > #12 in (anonymous namespace)::CoinMPSolver::solve() at engine/sc/source/solver/CoinMPSolver.cxx:325:23 > #13 in ScSolverSettings::solve() at engine/sc/source/ui/unoobj/solveruno.cxx:902:14 > #14 in sc_apitest::ScSolverSettingsObj::testXSolverSettings() at engine/sc/qa/extras/scsolverobj.cxx:121:19 and > CglCliqueHelper.cpp:296:53: runtime error: division by zero > #0 in CglClique::createFractionalGraph() at <null> (engine/instdir/program/libCgl.so.1 +0x81b36) > #1 in CglClique::generateCuts(OsiSolverInterface const&, OsiCuts&, CglTreeInfo) at <null> (engine/instdir/program/libCgl.so.1 +0x60a26) > #2 in CglFakeClique::generateCuts(OsiSolverInterface const&, OsiCuts&, CglTreeInfo) at <null> (engine/instdir/program/libCgl.so.1 +0x72e73) > #3 in CbcCutGenerator::generateCuts(OsiCuts&, int, OsiSolverInterface*, CbcNode*) at <null> (engine/instdir/program/libCbc.so.3 +0x8281c) > #4 in CbcModel::serialCuts(OsiCuts&, CbcNode*, OsiCuts&, int) at <null> (engine/instdir/program/libCbc.so.3 +0x3f37a6) > #5 in CbcModel::solveWithCuts(OsiCuts&, int, CbcNode*) at <null> (engine/instdir/program/libCbc.so.3 +0x35d618) > #6 in CbcModel::branchAndBound(int) at <null> (engine/instdir/program/libCbc.so.3 +0x33f172) > #7 in CbcMain1(int, char const**, CbcModel&, int (*)(CbcModel*, int), CbcSolverUsefulData&) at <null> (engine/instdir/program/libCbcSolver.so.3 +0x215c37) > #8 in CbcSolveProblem(void*, PROBLEMINFO*, OPTIONINFO*, int) at <null> (engine/instdir/program/libCoinMP.so.1 +0x2c880) > #9 in CbcOptimizeProblem at <null> (engine/instdir/program/libCoinMP.so.1 +0x2fdeb) > #10 in (anonymous namespace)::CoinMPSolver::solve() at engine/sc/source/solver/CoinMPSolver.cxx:325:23 > #11 in ScSolverSettings::solve() at engine/sc/source/ui/unoobj/solveruno.cxx:902:14 > #12 in sc_apitest::ScSolverSettingsObj::testXSolverSettings() at engine/sc/qa/extras/scsolverobj.cxx:121:19 and > CglTwomir.cpp:1782:14: runtime error: division by zero > #0 in DGG_add2stepToList(DGG_constraint_t*, char*, double*, double*, DGG_list_t*, DGG_data_t*, DGG_constraint_t*) at <null> (engine/instdir/program/libCgl.so.1 +0x5c63ed) > #1 in DGG_generateCutsFromBase(DGG_constraint_t*, DGG_list_t*, DGG_data_t*, void const*) at <null> (engine/instdir/program/libCgl.so.1 +0x5c227e) > #2 in DGG_generateTabRowCuts(DGG_list_t*, DGG_data_t*, void const*) at <null> (engine/instdir/program/libCgl.so.1 +0x5aa163) > #3 in CglTwomir::generateCuts(OsiSolverInterface const&, OsiCuts&, CglTreeInfo) at <null> (engine/instdir/program/libCgl.so.1 +0x59c4bd) > #4 in CbcCutGenerator::generateCuts(OsiCuts&, int, OsiSolverInterface*, CbcNode*) at <null> (engine/instdir/program/libCbc.so.3 +0x8281c) > #5 in CbcModel::serialCuts(OsiCuts&, CbcNode*, OsiCuts&, int) at <null> (engine/instdir/program/libCbc.so.3 +0x3f3896) > #6 in CbcModel::solveWithCuts(OsiCuts&, int, CbcNode*) at <null> (engine/instdir/program/libCbc.so.3 +0x35d61b) > #7 in CbcModel::branchAndBound(int) at <null> (engine/instdir/program/libCbc.so.3 +0x33f172) > #8 in CbcMain1(int, char const**, CbcModel&, int (*)(CbcModel*, int), CbcSolverUsefulData&) at <null> (engine/instdir/program/libCbcSolver.so.3 +0x215c37) > #9 in CbcSolveProblem(void*, PROBLEMINFO*, OPTIONINFO*, int) at <null> (engine/instdir/program/libCoinMP.so.1 +0x2c880) > #10 in CbcOptimizeProblem at <null> (engine/instdir/program/libCoinMP.so.1 +0x2fdeb) > #11 in (anonymous namespace)::CoinMPSolver::solve() at engine/sc/source/solver/CoinMPSolver.cxx:325:23 > #12 in ScSolverSettings::solve() at engine/sc/source/ui/unoobj/solveruno.cxx:902:14 > #13 in sc_apitest::ScSolverSettingsObj::testXSolverSettings() at engine/sc/qa/extras/scsolverobj.cxx:121:19 and > CglGomory.cpp:1317:30: runtime error: 3.84447e+09 is outside the range of representable values of type 'int' > #0 in CglGomory::generateCuts(OsiRowCutDebugger const*, OsiCuts&, CoinPackedMatrix const&, CoinPackedMatrix const&, double const*, double const*, double const*, double const*, double const*, char const*, CoinWarmStartBasis const*, CglTreeInfo) at <null> (engine/instdir/program/libCgl.so.1 +0x142933) > #1 in CglGomory::generateCuts(OsiSolverInterface const&, OsiCuts&, CglTreeInfo) at <null> (engine/instdir/program/libCgl.so.1 +0x1342e8) > #2 in CbcCutGenerator::generateCuts(OsiCuts&, int, OsiSolverInterface*, CbcNode*) at <null> (engine/instdir/program/libCbc.so.3 +0x8281c) > #3 in CbcModel::serialCuts(OsiCuts&, CbcNode*, OsiCuts&, int) at <null> (engine/instdir/program/libCbc.so.3 +0x3f3896) > #4 in CbcModel::solveWithCuts(OsiCuts&, int, CbcNode*) at <null> (engine/instdir/program/libCbc.so.3 +0x35d61b) > #5 in CbcModel::branchAndBound(int) at <null> (engine/instdir/program/libCbc.so.3 +0x33f172) > #6 in CbcMain1(int, char const**, CbcModel&, int (*)(CbcModel*, int), CbcSolverUsefulData&) at <null> (engine/instdir/program/libCbcSolver.so.3 +0x215c37) > #7 in CbcSolveProblem(void*, PROBLEMINFO*, OPTIONINFO*, int) at <null> (engine/instdir/program/libCoinMP.so.1 +0x2c880) > #8 in CbcOptimizeProblem at <null> (engine/instdir/program/libCoinMP.so.1 +0x2fdeb) > #9 in (anonymous namespace)::CoinMPSolver::solve() at engine/sc/source/solver/CoinMPSolver.cxx:325:23 > #10 in ScSolverSettings::solve() at engine/sc/source/ui/unoobj/solveruno.cxx:902:14 > #11 in sc_apitest::ScSolverSettingsObj::testXSolverSettings() at engine/sc/qa/extras/scsolverobj.cxx:121:19 Signed-off-by: Stephan Bergmann <stephan.bergmann@collabora.com> Change-Id: I8baaad0d3214da27cc85f76e267d4783dfae81e5 Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/4150 Tested-by: Jenkins CPCI <releng@collaboraoffice.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> (cherry picked from commit 85b26ba51a219795938c82288e38518d7f9aec5e) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206638 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
This commit is contained in:
committed by
Xisco Fauli
parent
716cae1cd4
commit
6bc9e31108
Vendored
+170
@@ -1,3 +1,153 @@
|
||||
--- Cbc/src/CbcModel.cpp
|
||||
+++ Cbc/src/CbcModel.cpp
|
||||
@@ -7107,7 +7107,7 @@
|
||||
{
|
||||
CbcCutGenerator ** temp = generator_;
|
||||
generator_ = new CbcCutGenerator * [numberCutGenerators_+1];
|
||||
- memcpy(generator_, temp, numberCutGenerators_*sizeof(CbcCutGenerator *));
|
||||
+ if (numberCutGenerators_ != 0) memcpy(generator_, temp, numberCutGenerators_*sizeof(CbcCutGenerator *));
|
||||
delete[] temp ;
|
||||
generator_[numberCutGenerators_] =
|
||||
new CbcCutGenerator(this, generator, howOften, name,
|
||||
@@ -7116,7 +7116,7 @@
|
||||
// and before any changes
|
||||
temp = virginGenerator_;
|
||||
virginGenerator_ = new CbcCutGenerator * [numberCutGenerators_+1];
|
||||
- memcpy(virginGenerator_, temp, numberCutGenerators_*sizeof(CbcCutGenerator *));
|
||||
+ if (numberCutGenerators_ != 0) memcpy(virginGenerator_, temp, numberCutGenerators_*sizeof(CbcCutGenerator *));
|
||||
delete[] temp ;
|
||||
virginGenerator_[numberCutGenerators_++] =
|
||||
new CbcCutGenerator(this, generator, howOften, name,
|
||||
@@ -7131,7 +7131,7 @@
|
||||
{
|
||||
CbcHeuristic ** temp = heuristic_;
|
||||
heuristic_ = new CbcHeuristic * [numberHeuristics_+1];
|
||||
- memcpy(heuristic_, temp, numberHeuristics_*sizeof(CbcHeuristic *));
|
||||
+ if (numberHeuristics_ != 0) memcpy(heuristic_, temp, numberHeuristics_*sizeof(CbcHeuristic *));
|
||||
delete [] temp;
|
||||
int where;
|
||||
if (before < 0 || before >= numberHeuristics_) {
|
||||
@@ -9329,8 +9329,8 @@
|
||||
adjustment should be made for calling frequency.
|
||||
*/
|
||||
int iProbing = -1;
|
||||
- double smallProblem = (0.2 * totalCuts) /
|
||||
- static_cast<double> (numberActiveGenerators) ;
|
||||
+ double smallProblem = numberActiveGenerators == 0 ? 0.0 : (0.2 * totalCuts) /
|
||||
+ static_cast<double> (numberActiveGenerators);
|
||||
for (i = 0; i < numberCutGenerators_; i++) {
|
||||
int howOften = generator_[i]->howOften() ;
|
||||
/* Probing can be set to just do column cuts in treee.
|
||||
@@ -9350,7 +9350,7 @@
|
||||
bool probingWasOnBut = false;
|
||||
CglProbing * probing = dynamic_cast<CglProbing*>(generator_[i]->generator());
|
||||
if (probing && !numberNodes_) {
|
||||
- if (generator_[i]->numberCutsInTotal()) {
|
||||
+ if (generator_[i]->numberCutsInTotal() && numberActiveGenerators != 1) {
|
||||
// If large number of probing - can be biased
|
||||
smallProblem = (0.2 * (totalCuts - generator_[i]->numberCutsInTotal())) /
|
||||
static_cast<double> (numberActiveGenerators - 1) ;
|
||||
@@ -11501,7 +11501,7 @@
|
||||
}
|
||||
delete [] mark;
|
||||
// Now append other objects
|
||||
- memcpy(object_ + numberIntegers_, oldObject, nObjects*sizeof(OsiObject *));
|
||||
+ if (nObjects != 0) memcpy(object_ + numberIntegers_, oldObject, nObjects*sizeof(OsiObject *));
|
||||
// Delete old array (just array)
|
||||
delete [] oldObject;
|
||||
|
||||
--- Cgl/src/CglClique/CglCliqueHelper.cpp
|
||||
+++ Cgl/src/CglClique/CglCliqueHelper.cpp
|
||||
@@ -293,7 +293,7 @@
|
||||
nodes[i].nbrs = all_nbr + old_total;
|
||||
}
|
||||
|
||||
- fgraph.density = static_cast<double> (total_deg) / (sp_numcols * (sp_numcols-1));
|
||||
+ fgraph.density = sp_numcols == 1 ? 0.0 : static_cast<double> (total_deg) / (sp_numcols * (sp_numcols-1));
|
||||
|
||||
/*========================================================================*
|
||||
Compute the min and max degree.
|
||||
--- Cgl/src/CglGomory/CglGomory.cpp
|
||||
+++ Cgl/src/CglGomory/CglGomory.cpp
|
||||
@@ -2,6 +2,8 @@
|
||||
// Corporation and others. All Rights Reserved.
|
||||
// This code is licensed under the terms of the Eclipse Public License (EPL).
|
||||
|
||||
+#include <algorithm>
|
||||
+#include <limits>
|
||||
#include <cstdlib>
|
||||
#include <cstdio>
|
||||
#include <cmath>
|
||||
@@ -1314,7 +1316,7 @@
|
||||
for (j=0; j<number+1;j++) {
|
||||
double value = fabs(packed[j]);
|
||||
double dxInt = value*multiplier;
|
||||
- xInt[j]= static_cast<int> (dxInt+0.5);
|
||||
+ xInt[j]= static_cast<int> (std::min<double>(std::max<double>(dxInt, std::numeric_limits<int>::min()), std::numeric_limits<int>::max())+0.5);
|
||||
#if CGL_DEBUG>1
|
||||
printf("%g => %g \n",value,dxInt);
|
||||
#endif
|
||||
--- Cgl/src/CglKnapsackCover/CglKnapsackCover.cpp
|
||||
+++ Cgl/src/CglKnapsackCover/CglKnapsackCover.cpp
|
||||
@@ -3,6 +3,8 @@
|
||||
// Corporation and others. All Rights Reserved.
|
||||
// This code is licensed under the terms of the Eclipse Public License (EPL).
|
||||
|
||||
+#include <algorithm>
|
||||
+#include <limits>
|
||||
#include <cstdlib>
|
||||
#include <cstdio>
|
||||
#include <cmath>
|
||||
@@ -3905,7 +3907,7 @@
|
||||
}
|
||||
}
|
||||
int iUpper = static_cast<int> (floor(upperValue+1.0e-5));
|
||||
- int iLower = static_cast<int> (ceil(lowerValue-1.0e-5));
|
||||
+ int iLower = static_cast<int> (ceil(std::min<double>(std::max<double>(lowerValue, std::numeric_limits<int>::min()), std::numeric_limits<int>::max())-1.0e-5));
|
||||
int state=0;
|
||||
if (upperValue<1.0e6) {
|
||||
if (iUpper==1-numberM1)
|
||||
--- Cgl/src/CglPreProcess/CglPreProcess.cpp
|
||||
+++ Cgl/src/CglPreProcess/CglPreProcess.cpp
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <cmath>
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
+#include <limits>
|
||||
#include <cfloat>
|
||||
|
||||
#include "CoinPragma.hpp"
|
||||
@@ -1718,8 +1719,8 @@
|
||||
}
|
||||
if (allPlus)
|
||||
nPossible++;
|
||||
- int iUpper = static_cast<int> (floor(upperValue+1.0e-5));
|
||||
- int iLower = static_cast<int> (ceil(lowerValue-1.0e-5));
|
||||
+ int iUpper = static_cast<int> (floor(std::min<double>(std::max<double>(upperValue, std::numeric_limits<int>::min()), std::numeric_limits<int>::max())+1.0e-5));
|
||||
+ int iLower = static_cast<int> (ceil(std::min<double>(std::max<double>(lowerValue, std::numeric_limits<int>::min()), std::numeric_limits<int>::max())-1.0e-5));
|
||||
int state=0;
|
||||
if (upperValue<1.0e6) {
|
||||
if (iUpper==1-numberM1)
|
||||
@@ -6429,7 +6430,7 @@
|
||||
{
|
||||
CglCutGenerator ** temp = generator_;
|
||||
generator_ = new CglCutGenerator * [numberCutGenerators_+1];
|
||||
- memcpy(generator_,temp,numberCutGenerators_*sizeof(CglCutGenerator *));
|
||||
+ if (numberCutGenerators_ != 0) memcpy(generator_,temp,numberCutGenerators_*sizeof(CglCutGenerator *));
|
||||
delete[] temp ;
|
||||
generator_[numberCutGenerators_++]=generator->clone();
|
||||
}
|
||||
--- Cgl/src/CglTwomir/CglTwomir.cpp
|
||||
+++ Cgl/src/CglTwomir/CglTwomir.cpp
|
||||
@@ -1779,7 +1779,7 @@
|
||||
norm_val += (cut->coeff[i]*cut->coeff[i]);
|
||||
}
|
||||
|
||||
- norm_val /= cut->rhs * cut->rhs;
|
||||
+ norm_val = cut->rhs == 0 ? COIN_DBL_MAX : norm_val / (cut->rhs * cut->rhs);
|
||||
|
||||
if (rc_val < best_rc_val ) {
|
||||
best_rc_val = rc_val; best_rc_alpha = alpha; }
|
||||
--- Clp/src/ClpParameters.hpp
|
||||
+++ Clp/src/ClpParameters.hpp
|
||||
@@ -81,7 +81,7 @@
|
||||
@@ -9,3 +159,23 @@
|
||||
}
|
||||
/// And set
|
||||
template <class T> inline void
|
||||
--- Clp/src/ClpSimplex.cpp
|
||||
+++ Clp/src/ClpSimplex.cpp
|
||||
@@ -2557,14 +2557,14 @@
|
||||
numberTotal = 2 * (maximumInternalColumns_ + maximumInternalRows_);
|
||||
}
|
||||
lower_ = ClpCopyOfArray(rhs.lower_, numberTotal);
|
||||
- rowLowerWork_ = lower_ + numberColumns_;
|
||||
+ rowLowerWork_ = lower_ == nullptr ? nullptr : lower_ + numberColumns_;
|
||||
columnLowerWork_ = lower_;
|
||||
upper_ = ClpCopyOfArray(rhs.upper_, numberTotal);
|
||||
- rowUpperWork_ = upper_ + numberColumns_;
|
||||
+ rowUpperWork_ = upper_ == nullptr ? nullptr : upper_ + numberColumns_;
|
||||
columnUpperWork_ = upper_;
|
||||
cost_ = ClpCopyOfArray(rhs.cost_, numberTotal);
|
||||
objectiveWork_ = cost_;
|
||||
- rowObjectiveWork_ = cost_ + numberColumns_;
|
||||
+ rowObjectiveWork_ = cost_ == nullptr ? nullptr : cost_ + numberColumns_;
|
||||
dj_ = ClpCopyOfArray(rhs.dj_, numberTotal);
|
||||
if (dj_) {
|
||||
reducedCostWork_ = dj_;
|
||||
|
||||
Reference in New Issue
Block a user