git » orga2-tp1.git » commit c7bcf50

Fix eliminar: checkear que tenga un hijo correctamente

author Rodrigo Campos
2011-04-14 03:22:45 UTC
committer Rodrigo Campos
2011-04-14 03:22:45 UTC
parent 103009484932506d1151cfbf889f32573ef5b692

Fix eliminar: checkear que tenga un hijo correctamente

Una multiplicacion de dos numeros de 32 bits da el resultado en 64 bits
(edx:eax). Asique la multiplicacion es 0 sii los dos (eax y edx) son
cero. Y estabamos checkeando solo uno de ellos.

Al agregar el or entre los dos, si algun bit no es cero, pues entonces
el registro entero no es cero, y el cmp de abajo fallaria.

bintree.asm +2 -1

diff --git a/bintree.asm b/bintree.asm
index 301a51e..6a91d4d 100644
--- a/bintree.asm
+++ b/bintree.asm
@@ -183,9 +183,10 @@ eliminar:
 	cmp edx, 0
 	je .eliminar0
 
-	; Me fijo si tiene 1 hijo
+	; Me fijo si tiene 1 hijo (alguno de los dos es 0)
 	mov eax, .nIzq
 	mul dword .nDer
+	or edx, eax
 	cmp edx, 0
 	je .eliminar1