[BulmaGés]Bug en bulmacont (II)
Ricardo Díaz de la Calle
richard en galdi.es
Mar Ene 29 10:43:20 CET 2008
Hola:
Creo que soy el más indicado para revisar esta clase, pero últimamente no
dispongo de tiempo para nada y menos para machacarme con el código.
No obstante, como es algo que me encanta, voy a ver si a partir de mañana
puedo sacar algo de tiempo para dedicárselo a bulmacont y, en especial, a la
clase árbol.
Espero poder ayudarte pronto Leo.
Salu2,
Richard.
El Martes 29 Enero 2008, Leopold Palomo-Avellaneda escribió:
> Añadir,
>
> que aunque ahora me ha funcionado una vez, vuelve a petar el programa en
> esta función. Pero ahora peta en el destructor del árbol. Por favor,
> quisiera que alguien lo revisara.
>
> Leo
>
> A Dimarts 29 Gener 2008, Leopold Palomo Avellaneda va escriure:
> > Bones,
> >
> > haciendo mas pruebas hemos descubierto que si intentas hacer un balance
> > en bulmacont peta de forma contundente. Haciendo un bt me encuentro que:
> >
> > #0 0x00002b04fb1d5713 in QString::operator== () from
> > /usr/lib/libQtCore.so.4 #1 0x000000000046e4ab in QString::operator!= ()
> > #2 0x000000000046c2fc in Arbol::actualizahojas ()
> > #3 0x000000000055a964 in BalanceView::presentarSyS ()
> > #4 0x000000000055c87c in BalanceView::presentar ()
> > #5 0x000000000055ca0f in BalanceView::accept ()
> >
> >
> > y mirando el código de la función: bulmacont/src/arbol.cpp
> >
> > void Arbol::actualizahojas ( cursor2 *cuenta )
> > {
> > _depura ( "Arbol::actualizahojas", 0 );
> > unsigned int i = 0;
> > bool actualizado;
> > tipohoja *hojaraiz;
> >
> > QString cuentapadre = cuenta->valor ( "codigo" ).left ( 2 );
> > do {
> > hojaraiz = raiz[i];
> > i++;
> > } while ( i < 70 && cuentapadre != hojaraiz->codigo );
> > actualizado = false;
> >
> > el error está en el while. Nadie te garantiza que primero compare que y
> > sea menor qie 70 y luego que cuentapadre != hojaraiz->codigo. Puede pasar
> > que se intente acceder a hojaraiz->codigo con el índice i=70 i claro,
> > peta.
> >
> > La solución subida es:
> > ....
> > bool actualizado, condition = true;
> > .....
> > do {
> > hojaraiz = raiz[i];
> > if(i <70)
> > i++;
> > else
> > condition = false;
> > if(condition)
> > if(cuentapadre != hojaraiz->codigo)
> > condition = false;
> > } while ( condition );
> >
> >
> > Leo
>
> _______________________________________________
> BulmaGes mailing list
> BulmaGes en bulma.net
> http://llistes.bulma.net/mailman/listinfo/bulmages
> Home: http://www.iglues.org
> Wiki: http://www.iglues.org/wiki
> Bugs: http://www.iglues.org/bugzilla
--
Ricardo Díaz.
Más información sobre la lista de distribución BulmaGes