author | Rodrigo Campos
<rodrigo@sdfg.com.ar> 2011-04-18 02:27:47 UTC |
committer | Rodrigo Campos
<rodrigo@sdfg.com.ar> 2011-04-18 02:34:09 UTC |
parent | b6b79cc3c9eef8153760ec1c6dd84843e943df84 |
bintree.asm | +14 | -0 |
diff --git a/bintree.asm b/bintree.asm index 8c9a31b..22bf8d8 100644 --- a/bintree.asm +++ b/bintree.asm @@ -66,7 +66,14 @@ insertar: push dword .nom call strdup2 add esp, 4 + ; si fallamos al allocar memoria para el strdup, no tenemos mucho mas + ; para hacer: borramos la memoria allocada para el nodo y salimos + ; XXX: asignamos eax a .nNom antes de checkar porque, en caso que eax + ; sea cero, nos queda NULL en .nNom y el free que se llama despues al + ; borrar la memoria del nodo no deberia ser problema (free de NULL va ok) mov .nNom, eax + cmp eax, 0 + je .borrarme ; Si es el arbol vacio (apunta a NULL), entonces devolvemos el arbol que tiene solo este nodo ; Si no es el arbol vacio, insertamos el nodo @@ -80,6 +87,13 @@ insertar: push ebx ; nodo **arbol, 1ยบ param call buscar_e_insertar add esp, 8 + jmp .fin + +.borrarme: + push esi; el nodo que creamos + call borrar_nodo + add esp, 4 + jmp .fin .fin: pop ebx