Exception bei Funktionsaufruf in OnInitDialog



  • Hallo

    Ich bekomme immer folgende Exception:

    Unhandled exception at 0x004fba16 in BLM-Editor.exe: 0xC0000005: Access violation reading location 0x00d5a2ac.

    und lande hier im Code:

    void Release() throw()
    	{
    		ATLASSERT( nRefs != 0 ); //genau hier
    
    		if( _AtlInterlockedDecrement( &nRefs ) <= 0 )
    		{
    			pStringMgr->Free( this );
    		}
    	}
    

    wenn ich folgenden Code in der OnInitDialog stehen habe. Wenn ich auskommentiere läuft alles.

    CStringArray TempNames;
    	Country TempCountry;
    	Ini.GetKeyNames(_T("Countries"), &TempNames);
    	for(int i=0; i<TempNames.GetSize(); ++i)
    	{
    		Ini.GetDataBlock(_T("Countries"), TempNames[i], (LPVOID)&TempCountry ,sizeof(Country));
    

    Ich aufgerufene und nicht von mir stammende Funktion der Klasse CIni sieht so aus:

    DWORD CIni::GetDataBlock(LPCTSTR lpSection, LPCTSTR lpKey, LPVOID lpBuffer, DWORD dwBufSize, DWORD dwOffset) const
    {
    	LPTSTR psz = __GetStringDynamic(lpSection, lpKey);
    	DWORD dwLen = _tcslen(psz) / 2;
    	if (dwLen <= dwOffset)
    	{
    		delete [] psz;
    		return 0;
    	}
    
    	// verify psz, must be all in hex format
    	for (int i = 0; psz[i] != _T('\0'); i++)
    	{
    		TCHAR c = psz[i];
    		if ((c >= _T('0') && c <= _T('9'))
    			|| (c >= _T('a') && c <= _T('f'))
    			|| (c >= _T('A') && c <= _T('F')))
    		{
    			// valid
    		}
    		else
    		{
    			delete [] psz;
    			return 0;
    		}
    	}
    
    	DWORD dwProcLen = 0;
    	LPBYTE lpb = (LPBYTE)lpBuffer;
    
    	if (lpb != NULL)
    	{
    		dwProcLen = min(dwLen - dwOffset, dwBufSize);
    		LPCTSTR p = &psz[dwOffset * 2];
    		for (DWORD i = 0; i < dwProcLen; i++)
    		{			
    			TCHAR sz[3] = _T("");
    			_tcsncpy(sz, p, 2);			
    			lpb[i] = BYTE(_tcstoul(sz, NULL, 16));
    			p = &p[2];
    		}			
    	}
    	else
    	{
    		dwProcLen = dwLen - dwOffset;
    	}
    	delete [] psz;
    	return dwProcLen;
    }
    

    Ich freue mich auf Anregungen.

    chrische


Anmelden zum Antworten