[BulmaGés] Bug en bulmacont
Leopold Palomo Avellaneda
leo en alaxarxa.net
Mar Ene 29 00:25:53 CET 2008
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
--
--
Linux User 152692
PGP: 0xF944807E
Catalonia
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre : no disponible
Tipo : application/pgp-signature
Tamaño : 189 bytes
Descripción: This is a digitally signed message part.
Url : http://llistes.bulma.net/pipermail/bulmages/attachments/20080129/f0859e74/attachment-0001.pgp
Más información sobre la lista de distribución BulmaGes