From 89262e4763654b3a556383a42f893d8c985905a0 Mon Sep 17 00:00:00 2001 From: maxgrf Date: Tue, 18 Nov 2025 13:18:29 +0100 Subject: [PATCH] weitere Absicherung multiply --- matrix.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/matrix.c b/matrix.c index 8f986e7..db95047 100644 --- a/matrix.c +++ b/matrix.c @@ -32,7 +32,7 @@ void clearMatrix(Matrix *matrix) } } -void setMatrixAt(MatrixType value, Matrix matrix, unsigned int rowIdx, unsigned int colIdx) +void setMatrixAt(MatrixType value, Matrix matrix, unsigned int rowIdx, unsigned int colIdx) //Problematisch Call-by-Value --> Call-by-Pointer // Matrix matrix zu Matrix *matrix, empfehlung { if (rowIdx < matrix.rows && colIdx < matrix.cols && matrix.buffer != NULL) @@ -102,11 +102,13 @@ Matrix multiply(const Matrix matrix1, const Matrix matrix2) { // Needed: rows/Zeilen, collums/Spalten MatrixType buffer_add; - // Probe ob Spalten1 = Zeilen2 - if (matrix1.cols != matrix2.rows) + + if (!matrix1.buffer || !matrix2.buffer) // Probe ob leere Matrize vorliegt + return createMatrix(0, 0); + if (matrix1.cols != matrix2.rows) // Probe ob Spalten1 = Zeilen2 return createMatrix(0, 0); - Matrix result_mul = createMatrix(matrix1.rows, matrix2.cols); // "" + Matrix result_mul = createMatrix(matrix1.rows, matrix2.cols); for (unsigned int index = 0; index < matrix1.rows; index++) { @@ -119,7 +121,7 @@ Matrix multiply(const Matrix matrix1, const Matrix matrix2) buffer_add += getMatrixAt(matrix1, index, skalar) * getMatrixAt(matrix2, skalar, shift); } // matrix_mul[index][shift] = buffer_add; - setMatrixAt(buffer_add, result_mul, index, shift); // result als Pointer, also mit &result + setMatrixAt(buffer_add, result_mul, index, shift); } } return result_mul;