Hello,

I have a problem with my program : "MyAplli just wrote to memory location 0x0003AC74, 
which is in Memory Manager data Structures".

It seems it is a memory problem but I don't know where. Here is my code:


static void MainFillList(ListType *lst)
{
        UInt16 numItems=0;
        Char **itemList;
        Err errCPDB;
        UInt8 Record;
        MemHandle hHeure;
        MemHandle hPerson;
        Char* chrTemp;
        Int8 sizeOfRec;
        Int8 i;
        MemHandle hTache;
        Char* chrTemp2;
        Char * PersonTemp;
        Char PersonTemp2[10];
        UInt8 nbClients=0;

        errCPDB = CPDB_Ouvrir(0, "AppliDB", dmModeReadWrite, &Record);
        if (errCPDB !=0)
        {
                ErrDisplay("Impossible d'ouvrir la base de donn�es.");
        }


        errCPDB = CPDB_CompterEnregistrement(Record,&numItems);
        ErrFatalDisplayIf(errCPDB!=0,"impossible de compter les record");

        errCPDB = CPDB_LirePremier(Record);
        ErrFatalDisplayIf(errCPDB!=0,"impossible de lire le record");
        for (i=0;i<numItems;i++)
        {
                CPDB_LireChaine(Record,"PERSON",&hPerson);
                PersonTemp=(Char*)MemHandleLock(hPerson);
                StrCopy(PersonTemp2,PersonTemp);

                if (PersonTemp2[0]=='C')
                {
                        nbClients++;
                }

                MemHandleUnlock(hPerson);
                MemHandleFree(hPerson);
                hPerson=NULL;
                CPDB_LireSuivant(Record);
        }

        itemList = (Char **) MemPtrNew(nbClients * sizeof(Char *));
        gListClients=itemList;
        gListClientsNumItems = nbClients;

        errCPDB = CPDB_LirePremier(Record);
        ErrFatalDisplayIf(errCPDB!=0,"impossible de lire le record");

        for (i=0; i<numItems;i++)
        {
                CPDB_LireChaine(Record,"PERSON",&hPerson);
                PersonTemp =(Char*) MemHandleLock(hPerson);
                StrCopy(PersonTemp2,PersonTemp);
                if (PersonTemp2[0]=='C')
                {
                        CPDB_LireChaine(Record, "NOM", &hHeure);
                        chrTemp = (Char*)MemHandleLock(hHeure);
                        sizeOfRec = StrLen(chrTemp) + 1;
                        itemList[i] = (Char*)MemPtrNew(sizeof(Char) * sizeOfRec );
                        StrCopy(itemList[i],chrTemp);
                        MemHandleUnlock(hHeure);
                        MemHandleFree(hHeure);
                        hHeure = NULL ; // Not required to be done but still
                }
                MemHandleUnlock(hPerson);
                MemHandleFree(hPerson);
                hPerson=NULL;
                CPDB_LireSuivant(Record);
        }

        LstSetListChoices(lst, itemList, nbClients);
        LstDrawList(lst);
        CPDB_Fermer(Record);
}

Where there is CPDB it is just some things to use DataBase.

if you have an answer, I have passed 3 days on it and I don't know where there is a 
problem.

Thanks,

Helene




------------------------------------------

Faites un voeu et puis Voila ! www.voila.fr


--
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palmos.com/dev/support/forums/

Reply via email to