diff --git a/cpp/src/io/mps_parser.cpp b/cpp/src/io/mps_parser.cpp index 31bc9455e..535938b09 100644 --- a/cpp/src/io/mps_parser.cpp +++ b/cpp/src/io/mps_parser.cpp @@ -20,6 +20,7 @@ #include #include #include +#include namespace { using cuopt::linear_programming::io::error_type_t; diff --git a/docs/cuopt/source/cuopt-c/lp-qp-milp/examples/milp_mps_example.c b/docs/cuopt/source/cuopt-c/lp-qp-milp/examples/milp_mps_example.c index c61a29bd9..82109492a 100644 --- a/docs/cuopt/source/cuopt-c/lp-qp-milp/examples/milp_mps_example.c +++ b/docs/cuopt/source/cuopt-c/lp-qp-milp/examples/milp_mps_example.c @@ -119,21 +119,28 @@ cuopt_int_t solve_mps_file(const char* filename) termination_status_to_string(termination_status), termination_status); printf("Solve time: %f seconds\n", time); - printf("Objective value: %f\n", objective_value); - // Get and print solution variables if (has_primal_solution) { - solution_values = (cuopt_float_t*)malloc(num_variables * sizeof(cuopt_float_t)); - status = cuOptGetPrimalSolution(solution, solution_values); - if (status != CUOPT_SUCCESS) { - printf("Error getting solution values: %d\n", status); - goto DONE; - } - } + printf("Objective value: %f\n", objective_value); + + // Get and print solution variables + solution_values = + (cuopt_float_t*)malloc((size_t)num_variables * sizeof(cuopt_float_t)); + if (solution_values == NULL) { + printf("Error allocating solution buffer\n"); + status = CUOPT_OUT_OF_MEMORY; + goto DONE; + } + status = cuOptGetPrimalSolution(solution, solution_values); + if (status != CUOPT_SUCCESS) { + printf("Error getting solution values: %d\n", status); + goto DONE; + } - printf("\nSolution: \n"); - for (cuopt_int_t i = 0; i < num_variables; i++) { - printf("x%d = %f\n", i + 1, solution_values[i]); + printf("\nSolution: \n"); + for (cuopt_int_t i = 0; i < num_variables; i++) { + printf("x%d = %f\n", i + 1, solution_values[i]); + } } DONE: