diff --git a/matrix.c b/matrix.c
index 19f4b29a93f91a41d6386e5845deef495434d40e..781d4fbca760cee2453849234fb69e9f0566f283 100644
--- a/matrix.c
+++ b/matrix.c
@@ -12,8 +12,14 @@ error_code matrix_print(matrix mat)
         for (int32_t j = 0; j < mat.n; j++)
         {
             int32_t elem_mat;
-            matrix_get(&elem_mat, mat, i, j);
-            printf(" %d ", elem_mat);
+            if (matrix_get(&elem_mat, mat, i, j) == ok)
+            {
+                printf(" %d ", elem_mat);
+            }
+            else
+            {
+                return err;
+            }
         }
         printf("\n");
     }
@@ -55,7 +61,10 @@ error_code matrix_init(matrix *mat, int32_t m, int32_t n, int32_t val)
         {
             for (int32_t j = 0; j < mat->n; j++)
             {
-                matrix_set(*mat, i, j, val);
+                if (matrix_set(*mat, i, j, val) != ok)
+                {
+                    return err;
+                }
             }
         }
         return ok;
@@ -92,8 +101,14 @@ error_code matrix_init_from_array(matrix *mat, int32_t m, int32_t n, int32_t dat
         {
             for (int32_t j = 0; j < (s / mat->m); j++)
             {
-                matrix_set(*mat, i, j, data[dataIndex]);
-                dataIndex++;
+                if (matrix_set(*mat, i, j, data[dataIndex]) == ok)
+                {
+                    dataIndex++;
+                }
+                else
+                {
+                    return err;
+                }
             }
         }
         return ok;
@@ -113,8 +128,17 @@ error_code matrix_clone(matrix *cloned, matrix mat)
             for (int32_t j = 0; j < mat.m; j++)
             {
                 int32_t elem_mat;
-                matrix_get(&elem_mat, mat, i, j);
-                matrix_set(*cloned, i, j, elem_mat);
+                if (matrix_get(&elem_mat, mat, i, j) == ok)
+                {
+                    if (matrix_set(*cloned, i, j, elem_mat) != ok)
+                    {
+                        return err;
+                    }
+                }
+                else
+                {
+                    return err;
+                }
             }
         }
         if (matrix_is_equal(*cloned, mat) == ok)
@@ -143,9 +167,15 @@ error_code matrix_transpose(matrix *transposed, matrix mat)
     {
         for (int32_t j = 0; j < mat.m; j++)
         {
-            matrix_get(&elem, mat, j, i);
-            data_tmp[data_tmp_index] = elem;
-            data_tmp_index++;
+            if (matrix_get(&elem, mat, j, i) == ok)
+            {
+                data_tmp[data_tmp_index] = elem;
+                data_tmp_index++;
+            }
+            else
+            {
+                return err;
+            }
         }
     }
 
@@ -169,11 +199,16 @@ bool matrix_is_equal(matrix mat1, matrix mat2)
             for (int32_t j = 0; j < mat1.n; j++)
             {
                 int32_t elem_mat1, elem_mat2;
-                matrix_get(&elem_mat1, mat1, i, j);
-                matrix_get(&elem_mat2, mat2, i, j);
-                if (elem_mat1 == elem_mat2)
+                if (matrix_get(&elem_mat1, mat1, i, j) == ok && matrix_get(&elem_mat2, mat2, i, j) == ok)
                 {
-                    continue;
+                    if (elem_mat1 == elem_mat2)
+                    {
+                        continue;
+                    }
+                    else
+                    {
+                        return err;
+                    }
                 }
                 else
                 {