--- src/bruch.c 2007-12-06 11:30:00.000000000 -0500 +++ b/bruch.c 2013-10-22 08:37:43.000000000 -0400 @@ -975,14 +975,16 @@ ggterg = ggt_i(S_B_UI(bruch),S_B_OI(bruch)); if (ggterg == S_B_UI(bruch)) { + INT tmp = S_B_OI(bruch); freeself_bruch(bruch); - M_I_I(S_B_OI(bruch) / ggterg,bruch); + M_I_I(tmp / ggterg,bruch); goto ende; } if (-ggterg == S_B_UI(bruch)) { + INT tmp = S_B_OI(bruch); freeself_bruch(bruch); - M_I_I(- S_B_OI(bruch) / ggterg,bruch); + M_I_I(- tmp / ggterg,bruch); goto ende; } @@ -1032,12 +1034,14 @@ if (S_O_K(S_B_U(bruch)) == INTEGER) if (S_B_UI(bruch) == 1) { + INT tmp = S_B_OI(bruch); freeself_bruch(bruch); - M_I_I(S_B_OI(bruch),bruch); + M_I_I(tmp,bruch); goto ende; } else if (S_B_UI(bruch) == -1) { + INT tmp = S_B_OI(bruch); freeself_bruch(bruch); - M_I_I( - S_B_OI(bruch),bruch); + M_I_I( - tmp,bruch); goto ende; } if (NEGP(S_B_O(bruch)) && NEGP(S_B_U(bruch))) {